Показать сообщение отдельно
Старый 14.10.2013, 10:25   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от borntank Посмотреть сообщение
Спасибо конечно за алгоритм, но, к сожалению, не могу понять задачи связанные с файлами.
Ну что же - давайте разбираться. И, заодно, учиться.
Цитата:
В разделе переменных:
1. Определяете переменные для типизированных файлов и для циклов.
Код:
Var
 F,G:File of Integer;
 i,N,P:Integer;
Здесь добавлена еще переменная P - счетчик нечетных чисел.
Цитата:
В программе
Код:
Begin
Цитата:
2. Ассоциируете файловые переменные с путями к файлам.
Код:
Assign(F,'D:\First');
Assign(G,'D:\Second');
Здесь файлы с именами "First" и "Second" располагаются на диске D. Естественно, имена файлов и пути к ним Вы можете изменить на свой вкус.
Цитата:
3. Открываете файл F по перезаписи командой rewrite(f).
Код:
ReWrite(F);
Цитата:
4. Инициализируете генератор псевдослучайных чисел командой randomize.
Код:
Randomize;
Цитата:
5. В цикле записываете в файл 1000 случайных чисел из указанного диапазона. Получить их можно, к примеру, командой round(random*101)-50.
Код:
For i:=1 to 1000 do
  begin
   N:=-50+Random(101);
   Write(F,N);
  end;
 Close(F);
Здесь - одно замечание. Конечно, генерацию чисел можно организовать и так, как предлагает AlexZir, но мне представляется этот переход от вещественного к целочисленному формату излишним и перегружающим программу. Поэтому я предлагаю более простой и прямой вариант.
Цитата:
6. Переоткрываете файл F по чтению командой reset(f), а файл G - по перезаписи командой rewrite(G).
Код:
 ReSet(F);
 ReWrite(G);
Цитата:
7. В цикле считываете число из F, анализируете его на делимость на 2, если не делится - записываете в файл G.
Код:
 P:=0;
 For i:=1 to 1000 do
  begin
   Read(F,N);
   If (N mod 2)<>0 then
    begin
     Write(G,N);
     P:=P+1;
    end;
  end;
Добавлен подсчет количества нечетных чисел.
Цитата:
8. Закрываете оба файла.
Код:
 Close(F);
 Close(G);
Цитата:
По окончании работы программы можете просмотреть содержимое полученных файлов, к примеру, через Блокнот.
Вот тут - внимание! Это так, но ТОЛЬКО если тип файлов - текстовый (Text). Если же, как в данном случае, объявлен числовой формат файлов, то всё, что Вы увидите, открыв их Блокнотом - это цепочку крякозябров. Ибо информация закодирована. Поэтому я вставил чтение и вывод на экран нечетных чисел, содержащихся в файле G, для чего мне и понадобился счетчик P:
Код:
 ReSet(G);
 For i:=1 to P do
  begin
   Read(G,N);
   Write(N:4);
  end;
Ну и заканчиваем программу. Оператор Readln поставлен для того, чтобы приостановить работу и посмотреть на результат. Возможно, в АВС он не нужен - не знаю.
Код:
 Readln
End.
Теперь осталось только состыковать фрагменты листинга. Это я предоставляю Вам.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070