Перемножить соответственные элементы двух очередей и организовать третью очередь - 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'.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д