Перемножить соответственные элементы двух очередей и организовать третью очередь - Free Pascal
Формулировка задачи:
Имеется файл с натуральными числами, не большими 100. Создать одну очередь однозначных чисел, а вторую очередь двузначных чисел. Перемножить соответственные элементы двух очередей и организовать третью очередь. Результат выведите в текстовый файл.
Решение задачи: «Перемножить соответственные элементы двух очередей и организовать третью очередь»
textual
Листинг программы
- {Имеется файл с натуральными числами, не большими 100. Создать одну очередь
- однозначных чисел, а вторую очередь двузначных чисел. Перемножить
- соответственные элементы двух очередей и организовать треть
- ю очередь. Результат выведите в текстовый файл. }
- uses
- crt;
- const
- n = 20; //количество элементов в очередях
- type
- plist=^tlist;
- tlist=record
- zn:integer;
- next:pList;
- end;
- var
- f5,l5,f1,l1,f2,l2,f3,l3,f4,l4:plist; //4 очереди
- a,b,i,p:integer;
- f,g:text;
- procedure Push(var first,last:plist;a:integer);
- var
- p:plist;
- begin
- new(p);
- p^.zn:=a;
- p^.next:=nil;
- if (first=nil) then
- first:=p
- else
- last^.next:=p;
- last:=p;
- end;
- function Pop(var first:pList;var a:integer):boolean;
- var
- p:pList;
- begin
- if (first=nil) then
- begin
- pop:=false;
- end
- else
- begin
- a:=first^.zn;
- p:=first;
- first:=first^.next;
- dispose(p);
- pop:=true;
- end;
- end;
- begin
- randomize;
- writeln('Исходный файл:');
- assign(f,'data_f1.txt');
- assign(g,'data_f2.txt');
- rewrite(f);
- for i:=1 to n do
- begin
- a:=random(100)+1;
- writeln(f,a);
- write(a:4)
- end;
- close(f);
- p:=1;
- new(l1);
- new(l2);
- new(l3);
- new(l4);
- new(l5);
- reset(f);
- while not eof(f) do
- begin
- readln(f,a);
- if (a>=0) and (a<10) then
- begin
- push(f1,l1,a);
- push(f4,l4,a);
- end;
- if (a>=10) and (a<100) then
- begin
- push(f2,l2,a);
- push(f5,l5,a);
- end;
- end;
- close(f);
- writeln('Элементы 1-й очереди: ');
- while (pop(f1,a)=true) do
- write(a:4);
- writeln;
- writeln('Элементы 2-й очереди: ');
- while (pop(f2,b)=true) do
- write(b:4);
- while (pop(f4,a)=true) and (pop(f5,b)=true) do
- begin
- p:=a*b;
- push(f3,l3,p);
- end;
- writeln;
- rewrite(g);
- writeln('Элементы 3-й очереди: ');
- while (pop(f3,p)=true) do
- begin
- write(p:4);
- writeln(g,p);
- end;
- close(g);
- readln;
- end.
Объяснение кода листинга программы
- Создаются 4 очереди (f1, l1, f2, l2, f3, l3, f4, l4) для хранения одно- и двузначных чисел.
- Файл 'data_f1.txt' заполняется случайными числами от 1 до 100.
- Программа заполняет очереди f1 и f4 числами из файла 'data_f1.txt', а очереди f2 и f5 - числами из файла 'data_f2.txt'.
- Числа из очередей f1 и f2 перемножаются и записываются в очередь f3.
- Результат выводится в файл 'data_f3.txt'.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д