14 / 14 / 4
Регистрация: 27.07.2011
Сообщений: 162
|
|
1 | |
Считывание в файл02.08.2012, 17:00. Показов 780. Ответов 8
Метки нет (Все метки)
Всем привет. Сегодня столкнулся с проблемой. Программа делает 4 действия: рандомой забивает числа в файл,затем считывает их в массив,сортирует его и записывает его в новый файл. Все делается,но в массив считывается только 8192 числа(из 10000,как должно быть). Нигде не встречал такого,объясните с чем это связано.
0
|
02.08.2012, 17:00 | |
Ответы с готовыми решениями:
8
Считывание и запись в файл Считывание и запись в файл считывание и запись в файл Построчное считывание в файл |
98 / 49 / 4
Регистрация: 24.12.2011
Сообщений: 101
|
|
02.08.2012, 17:09 | 2 |
*telepat mode on*
скорее всего ограничение связано с используемым типом данных в переменной, отвечающей за количество или индекс числа. 8192*4(размер int)=32768 (максимальное значение для unsigned short) *telepat mode off* видя исходники было бы проще.
1
|
14 / 14 / 4
Регистрация: 27.07.2011
Сообщений: 162
|
||||||
02.08.2012, 17:19 [ТС] | 3 | |||||
в том-то и дело,что нет никакой индексной переменной. А что касаемо 8192,то очень удивило,знаю про 32768.
Надо было сразу исходники выложить,согласен.
0
|
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
|
|
02.08.2012, 17:35 | 4 |
Откуда вы узнали, что их именно столько? Считали вручную?
1
|
14 / 14 / 4
Регистрация: 27.07.2011
Сообщений: 162
|
|
02.08.2012, 17:41 [ТС] | 5 |
а как же иначе? сидел,высчитывал...) а если внимательнее читали код,то поняли бы. там есть проверка. числа генерируются от 100 до 999,массив инициализируется 0,вот и подсчет. почему в массив считывается 8192 числа,а не 10к - вопрос.
0
|
137 / 126 / 14
Регистрация: 03.07.2012
Сообщений: 355
|
|
02.08.2012, 17:49 | 6 |
NinGAZ, Сделайте две проверки количества чисел. Когда записываете в файл и когда считываете из файла.
Так будет легче понять в каком месте ошибка
1
|
14 / 14 / 4
Регистрация: 27.07.2011
Сообщений: 162
|
|
02.08.2012, 20:13 [ТС] | 7 |
в файл пишется 10к чисел,считывается 8192. Там и так сделаны проверки,я даже знаю в каком месте утечка,но не понимаю из-за чего... возможности языка,разрядности или руки...
Добавлено через 2 часа 16 минут Итак,при проведении ряда опытов стало ясно следующее: переполняется буфер. если числа будут двузначными,то мы приблизимся к ~9,5к,но этого мало. так же на более мощной машине результат больше,но не 10к чисел. всем спасибо,вопрос решен.
0
|
Заблокирован
|
||||||
02.08.2012, 20:34 | 8 | |||||
- сразу конфликт двух потоков думаю от этого все проблеммы и шли. Не луше ли было сделать вот так ifstream fin; а когда файл записывался делать fin.open("numbers.txt"). Кстати нигде не нашёл игде ofs.close() - это кто сказал что его не надо писать?
Добавлено через 10 минут NinGAZ, вот и вся твоя задача - всё пишется и итается ровно 10000 раз
1
|
14 / 14 / 4
Регистрация: 27.07.2011
Сообщений: 162
|
|
02.08.2012, 21:52 [ТС] | 9 |
-=ЮрА=-, спасибо,я и не думал,что из-за этого может быть. очень доходчиво,особенно код.
0
|
02.08.2012, 21:52 | |
02.08.2012, 21:52 | |
Помогаю со студенческими работами здесь
9
Считывание и запись в файл Считывание строк в файл Считывание и запись в файл Запись в файл и считывание Считывание и запись в файл Считывание посимвольно файл Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |