Перенос части текста из одного файла в другой - 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);
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д