Свой С# Код

Solus

Client
Регистрация
14.04.2014
Сообщения
378
Благодарностей
120
Баллы
43
Всем доброго времени суток. Кто может пояснить как такое может быть(или что ту не верно)?
Есть такой код:
int[] str = new int[1000];
Random rnd = new Random();
StreamWriter a = File.CreateText("D:\\testing.txt");
List<int> lst = new List<int>();
for (int i=0; i<=999; i++)
{
str = rnd.Next(1,8;
}
for (int i=0; i<=999; i++)
{
if(i % 5 != 0)
lst.Add(str);
}
foreach (int element in lst)
{
a.WriteLine(element);
}

return lst.Count;

Если в кратко, изложить суть ты выходит так:
создаю массив [1000]
создаю файл в директории D:\\testing.txt
создаю список
в массиве, в каждой ячейке, устанавливаю случайное значение из диапазона от 1 до 8
из массива переношу в список ячейки, которые не являются каждой пятой(по сути, отсеивается 1/5 массива, т.е. 200)
далее переношу список в созданный в директории файл
результат на выходе: в списке "lst" 800 строк. Но в файле testing.txt, после записи, их 684.
Что тут не так сделано? Почему кол-во строк списка "lst" и файла testing.txt разные?
И еще, в строке str = rnd.Next(1,8; скобка не закрыта намеренно т.к. смайлик выходит 8-)
 

Nick

Client
Регистрация
22.07.2014
Сообщения
1 983
Благодарностей
817
Баллы
113
А ты уверен, что в списке lst — 800 строк? Вообще-то их там тоже 684, потому что 116 элементов (пятёрок) в него не добавились.
Нужно делать так:
Код:
if(i % 5 != 0)
lst.Add(str);
else
i--;
Тогда в случае, если выпала пятёрка, уменьшая счётчик, ты добавишь ещё одну попытку.
Чтобы код не обрабатывался парсером форума, заключай его в тэги [СODE][/СODE] (кнопка с угловыми скобками <> в редакторе)
 

Solus

Client
Регистрация
14.04.2014
Сообщения
378
Благодарностей
120
Баллы
43
Тему можно закрыть.
Решение проблемы:
Код:
a.Close();
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)