Свой С# Код

  • Автор темы Автор темы Solus
  • Дата начала Дата начала

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

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