Перенос части текста из одного файла в другой - 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);
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.727 из 5
Похожие ответы