Создать файл, компоненты которого случайные целые числа - Pascal
Формулировка задачи:
1. Используя типизированные файлы(вывод исходного и вновь создаваемого файлов осуществить программным путем).
Создать файл, компоненты которого случайные целые числа. Подсчитать, сколько из них нечетных или кратных трем.
Создать новый файл, содержащий такие числа.
2. Выполнить предыдущее задание, используя текстовые файлы.
Решение задачи: «Создать файл, компоненты которого случайные целые числа»
textual
Листинг программы
{$MODE TP}
var
f, g: File Of Integer;
numb: Integer;
i, n, count: Word;
begin
repeat
Write('How much numbers to generate? ');
ReadLn(n);
until (n > 0);
Write('Generated array:');
Assign(f, 'f.dat'); ReWrite(f);
for i := 0 to n - 1 do
begin
numb := Random(5001) - 2500;
Write(numb:6);
Write(f, numb);
end;
Close(f); ReSet(f);
Assign(g, 'g.dat'); ReWrite(g);
count := 0; WriteLn;
while (Not EoF(f)) do
begin
Read(f, numb);
if ((Odd(numb)) Or (numb mod 3 = 0))
then
begin
Inc(count);
Write(g, numb);
end;
end;
Close(f); Close(g);
WriteLn('Asnwer: ', count);
ReSet(g);
while (Not EoF(g)) do
begin
Read(g, numb);
Write(numb:6);
end;
Close(g);
end.
Объяснение кода листинга программы
- Объявляются переменные:
f, g: File Of Integer;- создаются файловые переменные для работы с целыми числамиnumb: Integer;- переменная для хранения целого числаi, n, count: Word;- переменные для работы с целыми числами и подсчета
- Запрашивается у пользователя количество чисел для генерации:
repeat...until- у пользователя запрашивается ввод количества чисел, пока не будет введено положительное число
- Генерируются случайные числа и записываются в файл:
Assign(f, 'f.dat'); ReWrite(f);- создается файлf.datдля записиfor i := 0 to n - 1 do- запускается цикл от 0 до n-1numb := Random(5001) - 2500;- генерируется случайное число от -2500 до 2500Write(f, numb);- число записывается в файлf.dat
- Числа из файла f.dat проверяются на условия (нечетность и кратность 3):
Assign(g, 'g.dat'); ReWrite(g);- создается файлg.datдля записиwhile (Not EoF(f)) do- пока не достигнут конец файлаRead(f, numb);- считывается число из файлаif ((Odd(numb)) Or (numb mod 3 = 0))- проверяется, удовлетворяет ли число условиямInc(count); Write(g, numb);- если число подходит, увеличивается счетчик и число записывается в файлg.dat
- Закрываются файлы и выводится результат:
Close(f); Close(g);- закрываются файлыf.datиg.datWriteLn('Asnwer: ', count);- выводится количество чисел, удовлетворяющих условиямReSet(g);- файлg.datоткрывается для чтенияwhile (Not EoF(g)) do- пока не достигнут конец файлаg.datRead(g, numb);- считывается число из файлаg.datWrite(numb:6);- число выводится на экран.