Перемножить соответственные элементы двух очередей и организовать третью очередь - 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.

Объяснение кода листинга программы

  1. Создаются 4 очереди (f1, l1, f2, l2, f3, l3, f4, l4) для хранения одно- и двузначных чисел.
  2. Файл 'data_f1.txt' заполняется случайными числами от 1 до 100.
  3. Программа заполняет очереди f1 и f4 числами из файла 'data_f1.txt', а очереди f2 и f5 - числами из файла 'data_f2.txt'.
  4. Числа из очередей f1 и f2 перемножаются и записываются в очередь f3.
  5. Результат выводится в файл 'data_f3.txt'.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5
Похожие ответы