Подправить код, касаемый работы с файлами - C#
Формулировка задачи:
Вообще дан такой алгоритм:
Исходный файл f разбивается на два вспомогательных файла f1 и f2. Распределение происходит следующим образом: поочередно считываются записи ai исходной последовательности (неупорядоченной) таким образом, что если значения ключей соседних записей удовлетворяют условию f(ai)<=f(ai+1), то они записываются в первый вспомогательный файл f1. Как только встречаются f(ai)>f(ai+1), то записи ai+1 копируются во второй вспомогательный файл f2. Процедура повторяется до тех пор, пока все записи исходной последовательности не будут распределены по файлам.
Мой код:
Как можно исправить?
int[] Arr = new int[10]; TextWriter txtWriter = new StreamWriter("D:\\F.txt"); //Создали файл. StreamWriter реализует поток для записи через TextWriter. { Random rnd = new Random(); for (int i = 0; i < Arr.Length; i++) { Arr[i] = rnd.Next(100); txtWriter.WriteLine(Arr[i]);//Записываем случайные числа в наш файл } } txtWriter.Close(); //Закрываем поток TextWriter txtWriter1 = new StreamWriter("D:\\F1.txt"); //создали файл F1.txt TextWriter txtWriter2 = new StreamWriter("D:\\F2.txt"); //создали файл F2.txt TextReader txtReader = new StreamReader("D:\\F.txt"); //Читаем наш файл for (int i = 0; i < Arr.Length; i++) { if (Arr[i] < Arr[i+1]) //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Здесь пишет, что индекс находился за границами диапазона txtWriter1.WriteLine(Arr[i]); else txtWriter2.WriteLine(Arr[i+1]); } txtReader.Close(); txtWriter1.Close(); txtWriter2.Close(); Console.ReadLine();
Решение задачи: «Подправить код, касаемый работы с файлами»
textual
Листинг программы
bool firstfile = true; //создается переменная, в которую запоминается файл, в который мы сейчас пишем. По умолчанию мы пишем в первый файл, поэтому она изначально true, когда станет false-будем писать во второй. for (int i = 1; i < Arr.Length; i++) //просматриваем массив { if (firstfile) txtWriter1.WriteLine(Arr[i - 1]); //тут пишем в файл, соответствующий значению переменной else txtWriter2.WriteLine(Arr[i - 1]); if (!(Arr[i - 1] <= Arr[i])) firstfile = !firstfile; //а тут меняем файл, в который мы запишем следующую переменную, если следующее значение больше предыдущего. } if (firstfile) txtWriter1.WriteLine(Arr[Arr.Length - 1]); //Тут пишем последний элемент в файл, в который мы писали на момент окончания цикла. Цикл его не записал по той причине, что ему надо сравнивать со следующим, а следующего после последнего нет. else txtWriter2.WriteLine(Arr[Arr.Length - 1]);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д