Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2013, 23:52   #11
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Зачем переписывать данные во временные файлы? Это медленно, быстрее с массивом работать, тем более, что лимит памяти это позволяет.
Arigato вне форума Ответить с цитированием
Старый 07.11.2013, 23:58   #12
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Это просто такой юмор по поводу того, что файл с исходными данными надо открывать только один раз.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 08.11.2013, 08:48   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
быстрее с массивом работать, тем более, что лимит памяти это позволяет.
это не совсем так.
в ТурбоПаскаль, например, размер переменной (массива) не может быть более 64 кбайт (ограничение сегмента данных MS DOS).
Более того, я вообще не уверен, что такой объём данных поместится даже в динамическую память - ибо, как говорил наш дорогой Билл Гейтс - "640 кбайт памяти безусловно хватит всем приложениям!"
Т.е. в программе под MS DOS обязательно либо повторное открытие файла, либо использование временного файла.

Кроме того, не буду утверждать, но, возможно, что если писать строки в типизированный файл (file of TStr30, где type TStr30 = string[30]) ), то после нахождения нужной цены, в этом файле можно установить указатель сразу на нужную запись (через seek) и прочитать её. При повторном переоткрытии исходного файла нужно будет перепрочитать все строки до нужной.
(ещё раз повторю - не буду утверждать, что временный файл - это быстрее! и я бы лично, в случае нехватки ресурсов для помещения всех данных в память, просто переоткрывал бы файл. Это точно проще, а быстрее или нет - спорно...)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.11.2013, 10:32   #14
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Раз в задаче стоит ограничение в 64Мб, то о Турбо Паскале тут речи не идет.
Arigato вне форума Ответить с цитированием
Старый 08.11.2013, 10:35   #15
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Раз в задаче стоит ограничение в 64Мб, то о Турбо Паскале тут речи не идет.
Да и всегда есть чем его заменить, либо АБС, либо Delphi (странно, но еще нигде не видел FPC)..

UPDATE
Даже не той олимпиаде, которую сейчас решает ТС, стоит Делфи 7.0..

Последний раз редактировалось Poma][a; 08.11.2013 в 10:42.
Poma][a вне форума Ответить с цитированием
Старый 08.11.2013, 10:52   #16
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Раз в задаче стоит ограничение в 64Мб, то о Турбо Паскале тут речи не идет.
Да, действительно, согласен!
А я сразу не сообразил!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.11.2013, 11:04   #17
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
Это просто такой юмор по поводу того, что файл с исходными данными надо открывать только один раз.
а на самом деле его вообще нельзя открывать
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 11.11.2013, 19:02   #18
Beny Benassi
 
Регистрация: 07.11.2013
Сообщений: 3
По умолчанию

Условие о еденичном считывании с файла было в правилах олимпиады.
Beny Benassi вне форума Ответить с цитированием
Старый 11.11.2013, 21:38   #19
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Тогда есть такой путь:
1. Читаем первую строку.
2. Читаем последующие строки в динамический массив - размер 3 Мб
3. Читаем цены в короткий массив (с сортировкой), для выбора пятого фотика (как описано ранее).
4. Достаем из динамического массива наименование модели.
5. Выводим информацию.


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Олимпиадная задача. (C#) Nekro95 Помощь студентам 4 20.10.2013 14:39
олимпиадная задача quade1992 Паскаль, Turbo Pascal, PascalABC.NET 0 17.05.2012 18:57
Олимпиадная задача Sanek_ntsk Помощь студентам 4 09.11.2011 23:03
Олимпиадная задача. _-Re@l-_ Паскаль, Turbo Pascal, PascalABC.NET 1 09.12.2010 20:53
Олимпиадная задача Carbon Общие вопросы C/C++ 2 23.05.2007 22:07