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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2016, 15:36   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от dimon_snake Посмотреть сообщение
а 10000 стоит, потому что... размер заданного файла не превышает 512 Кб
ну, попробуйте подсчитать, сколько чисел будет, если взять однозначные числа и записать их через пробел
1 2 3 4 5 6 7 2 3 4 5 6 7 8 9 1 2 3 4 8 1 .... 8 7 6 2 4
?

по моим скромным подсчётам - 262144 числа.
это чуть больше ваших 10000

но, как тут верно заметили, числа накапливать вообще нет смысла.
нужно читать файл как бинарный/символьный, с конца к началу, считать сумму цифр и записывать в файл.
и всё.

Цитата:
Сообщение от dimon_snake Посмотреть сообщение
free pascal 2.6.4
а почему бы не подключить стандартную библиотеку
и не воспользоваться TFileStream ?
Код:
fs := TFileStream.Create(Filename, fmOpenRead);

Последний раз редактировалось Serge_Bliznykov; 20.12.2016 в 15:41.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.12.2016, 16:04   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

короче, попробуйте такой код:
Код:
uses classes, sysutils;

const
  FilenameIn = 'D:\sums.txt';
  FileNameResult = 'D:\sums2.txt';

var
  fs : TFileStream;
  i, sum : integer;
  f : TextFile;
  b : byte;
  isNumber : boolean;
begin
  fs := TFileStream.Create(FilenameIn, fmOpenRead);
  Assign(f, FileNameResult);
  Rewrite(f);
  isNumber := false;
  sum := 0;
  for i:=fs.Size-1 downto 0 do begin
   fs.Seek(i, soFromBeginning);
   fs.Read(b,1);
   if (b>=ord('0')) and (b<=ord('9')) then begin
      if not isNumber then sum := 0;
      isNumber := true;
      sum := sum + b-ord('0');
   end
   else begin
     if isNumber then Write(f, sum,' ');
     isNumber := false;
   end;
  end;
  if isNumber then Write(f, sum,' ');
  fs.Free;
  Close(f);

end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.12.2016, 16:17   #13
dimon_snake
Форумчанин
 
Регистрация: 05.11.2015
Сообщений: 167
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
короче, попробуйте такой код:
вышло так же, как и у меня, когда я пробовал читать числами. немного не дотягивает.
dimon_snake вне форума Ответить с цитированием
Старый 20.12.2016, 16:43   #14
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

во-первых, переменную i нужно сделать типа LongInt
Код:
var
  fs : TFileStream;
  i : LongInt;
а во-вторых,
Цитата:
Сообщение от dimon_snake Посмотреть сообщение
вышло так же, как и у меня, когда я пробовал читать числами.
я ничего не понимаю.
запускаю код, откомплированный fpc compiler 2.6.4
запускаю под Window 7.
входной файл: sums.txt размером 654 кБ (670249 байт)
(вбил туда числа "от фонаря", потом мнокократно скопировал строки).
содержит 157893 числа
время выполнения (создание файла sums2.txt) около 2 секунд.

что я делаю не так?
Вам выложить EXE-ник и текстовый файл?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.12.2016, 19:14   #15
dimon_snake
Форумчанин
 
Регистрация: 05.11.2015
Сообщений: 167
По умолчанию

Благодарен, получилось.
Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
я ничего не понимаю.
запускаю код, откомплированный fpc compiler 2.6.4
запускаю под Window 7.
входной файл: sums.txt размером 654 кБ (670249 байт)
(вбил туда числа "от фонаря", потом мнокократно скопировал строки).
содержит 157893 числа
время выполнения (создание файла sums2.txt) около 2 секунд.

что я делаю не так?
Вам выложить EXE-ник и текстовый файл?
не понял. это какая программа использована?
dimon_snake вне форума Ответить с цитированием
Старый 20.12.2016, 22:37   #16
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от dimon_snake Посмотреть сообщение
не понял. это какая программа использована?
вот эта
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очень долгая загрузка страницы usa-1500 PHP 5 09.02.2014 15:14
Долгая прорисовка DBGridEh Dozent Компоненты Delphi 0 02.08.2013 17:07
Долгая загрузка системы Дмитрий-1 Компьютерное железо 13 24.05.2013 12:29
Долгая загрузка программы Tulc Помощь студентам 4 20.11.2011 14:24
Долгая загрузка Windows XP sp3 DJ HITMAN Windows 14 04.09.2010 00:49