Перенос части текста из одного файла в другой - C#
Формулировка задачи:
Задача:
_______
Распечатать анкетные данные студентов, получивших за все время обучения одну оценку 4, а все остальные оценки - 5.
_______
Предположим, дан фаил, в котором записаны фамилии и оценки, примерно так:
Gelz |5,4,5,5,5,5
Nevelson |3,4,5,5,5,5
Grimp |3,4,5,5,5,5
Brown |4,4,5,5,5,5
Harris |5,4,5,5,5,5
Lee |2,4,5,5,5,5
Lewis |4,5,5,5,5,5
Walker |5,4,5,5,5,5
Phillips |5,5,5,5,4,5
Из данного файла надо перенести данные только об студентах, получивших за все время обучения одну оценку 4, а все остальные оценки - 5.
Решение задачи: «Перенос части текста из одного файла в другой»
textual
Листинг программы
/// <summary> /// Проверяем строку на следование условию /// </summary> /// <param name="line">Строка</param> /// <returns>True - НЕ соответствует условию</returns> private bool testLine(string line) { bool ex = false; //Переменная, для считывания оценки int num; //Флаг наличия одной четвёрке в списке оценок bool forFlag = false; //Парсим строку на имена и оценки var buff = line.Split(new string[] { "\t|" }, StringSplitOptions.None); //Просто проверка на некорректные строки if(buff.Length > 1) { //Парсим на отдельные оценки buff = buff[1].Split(new char[] { ',' }, StringSplitOptions.None); //Проходимся по всем оценкам foreach(var s in buff) { //Парсим оценку в число, и сразу же проверяем на ошибки if(int.TryParse(s, out num)) { //Если найдена четвёрка if (num == 4) { //И она уже не первая if (forFlag) { //Говорим, что проверка не пройдена ex = true; //И тупо выходим из цикла break; } //Говорим, что 4 уже была forFlag = true; } //Если оценка меньше 4, то тупо выходим из цикла else if (num < 4) { //Говорим, что проверка не пройдена ex = true; break; } //А, при пятёрках мы ничего не делаем } } } return ex; } /// <summary> /// Перенос строк из одного файла в другой /// </summary> /// <param name="inputPath">Путь к файлу с входными данными</param> /// <param name="outputPath">путь к файлу для записи данных</param> private void moveLines(string inputPath, string outputPath) { //Считываем все строки из файла, и переводим их в список var lines = System.IO.File.ReadAllLines(inputPath).ToList(); //Удаляем все строки, не соответствующие условию lines.RemoveAll(testLine); //Записываем отсортированные строки в файл System.IO.File.WriteAllLines(outputPath, lines); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д