Перемножить соответственные элементы двух очередей и организовать третью очередь - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Имеется файл с натуральными числами, не большими 100. Создать одну очередь однозначных чисел, а вторую очередь двузначных чисел. Перемножить соответственные элементы двух очередей и организовать третью очередь. Результат выведите в текстовый файл.

Решение задачи: «Перемножить соответственные элементы двух очередей и организовать третью очередь»

textual
Листинг программы
  1. {Имеется файл с натуральными числами, не большими 100. Создать одну очередь
  2. однозначных чисел, а вторую очередь двузначных чисел. Перемножить
  3. соответственные элементы двух очередей и организовать треть
  4. ю очередь. Результат выведите в текстовый файл.        }
  5. uses
  6.   crt;
  7. const
  8.   n = 20; //количество элементов в очередях
  9. type
  10.   plist=^tlist;
  11.   tlist=record
  12.     zn:integer;
  13.     next:pList;
  14.   end;
  15. var
  16.   f5,l5,f1,l1,f2,l2,f3,l3,f4,l4:plist;  //4 очереди
  17.   a,b,i,p:integer;
  18.   f,g:text;
  19.  
  20. procedure Push(var first,last:plist;a:integer);
  21. var
  22.   p:plist;
  23. begin
  24.   new(p);
  25.   p^.zn:=a;
  26.   p^.next:=nil;
  27.   if (first=nil) then
  28.     first:=p
  29.   else
  30.     last^.next:=p;
  31.   last:=p;
  32. end;
  33.  
  34. function Pop(var first:pList;var a:integer):boolean;
  35. var
  36.   p:pList;
  37. begin
  38.   if (first=nil) then
  39.     begin
  40.       pop:=false;
  41.     end
  42.   else
  43.     begin
  44.       a:=first^.zn;
  45.       p:=first;
  46.       first:=first^.next;
  47.       dispose(p);
  48.       pop:=true;
  49.     end;
  50. end;
  51.  
  52. begin
  53.   randomize;
  54.   writeln('Исходный файл:');
  55.   assign(f,'data_f1.txt');
  56.   assign(g,'data_f2.txt');
  57.   rewrite(f);
  58.   for i:=1 to n do
  59.     begin
  60.       a:=random(100)+1;
  61.       writeln(f,a);
  62.       write(a:4)
  63.     end;
  64.   close(f);
  65.  
  66.   p:=1;
  67.   new(l1);
  68.   new(l2);
  69.   new(l3);
  70.   new(l4);
  71.   new(l5);
  72.  
  73.   reset(f);
  74.   while not eof(f) do
  75.     begin
  76.       readln(f,a);
  77.       if (a>=0) and (a<10) then
  78.         begin
  79.           push(f1,l1,a);
  80.           push(f4,l4,a);
  81.         end;
  82.       if (a>=10) and (a<100) then
  83.         begin
  84.           push(f2,l2,a);
  85.           push(f5,l5,a);
  86.         end;
  87.     end;
  88.   close(f);
  89.  
  90.   writeln('Элементы 1-й очереди: ');
  91.   while (pop(f1,a)=true) do
  92.     write(a:4);
  93.   writeln;
  94.   writeln('Элементы 2-й очереди: ');
  95.   while (pop(f2,b)=true) do
  96.     write(b:4);
  97.  
  98.  
  99.   while (pop(f4,a)=true) and (pop(f5,b)=true) do
  100.     begin
  101.       p:=a*b;
  102.       push(f3,l3,p);
  103.     end;
  104.   writeln;
  105.   rewrite(g);
  106.   writeln('Элементы 3-й очереди: ');
  107.   while (pop(f3,p)=true) do
  108.     begin
  109.       write(p:4);
  110.       writeln(g,p);      
  111.     end;
  112.   close(g);
  113.  readln;
  114. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы