Вывести общее количество зерна (в центнерах) отдельно каждого сорта для каждого района - Pascal ABC

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

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

О поступлении с элеваторов к зернохранилища зерна I, II и III сорта Структура записи: • название района, • номер элеватора, • количество зерна I, II и III сорта в центнерах за подотчетный период. Количество записей в файле> 10. Значение - стоимость центнера зерна, соответственно I, II и III сортов - ввести с клавиатуры. Вывести на печать следующую информацию: 1. Общее количество зерна (в центнерах) отдельно каждого сорта для каждого района; 2. Общая стоимость зерна отдельно каждого сорта для каждого района; 3. Общее количество зерна (в центнерах) для указанного с клавиатуры сорта.

Решение задачи: «Вывести общее количество зерна (в центнерах) отдельно каждого сорта для каждого района»

textual
Листинг программы
program pr;
const
  Csize = 10;
type
  Tgranary = record
    district: string[50];
    number: integer;
    cI: integer;
    cII: integer;
    cIII: integer;
  end;
  Tarr = array [1..Csize] of Tgranary;
 
var
  f: file of Tgranary;
  a: Tarr;
  i, n, af, b, c, s, sum: integer;
 
begin
  assign(f, 'c:\gra.txt');
  rewrite(f);
  writeln('Введите количество запсей');
  readln(n);
  for i := 1 to n do
  begin
    sum := 0;
    writeln('Введите название района');
    readln(a[i].district);
    writeln('Введите номер элеватора');
    readln(a[i].number);
    writeln('Введите количество зерна 1 сорта');
    readln(a[i].cI);
    writeln('Введите количество зерна 2 сорта');
    readln(a[i].cII);
    writeln('Введите количество зерна 3 сорта');
    readln(a[i].cIII);
    write(f, a[i]);
    writeln;
  end;
  close(f);
  writeln('Введите стоимость 1,2,3 сорта');
  readln(af, b, c);
  reset(f);
  while not eof(f) do
  begin
    read(f, a[i]);
    writeln('Район: ', a[i].district, ' Номер эл: ', a[i].number, ' 1 сорт: ', a[i].cI, ' 2 сорт: ', a[i].cII, ' 3 сорт ', a[i].cIII, ' ');
  end;
  for i := 1 to n do
  begin
    writeln('Район: ', a[i].district, ' ', ' Стоимость 1 сорт: ', a[i].cI * af, ' Стоимость 2 сорт: ', a[i].cII * b, ' Стоимость 3 сорт: ', a[i].cIII * c, ' '); end;
  writeln('Введите сорт');
  readln(s);
  if s = 1 then
    for i := 1 to n do
    begin
      sum := sum + (a[i].cI);
    end;
  if s = 2 then
    for i := 1 to n do
    begin
      sum := sum + (a[i].cII);
    end;
  if s = 3 then
    for i := 1 to n do
    begin
      sum := sum + (a[i].cIII);
    end;
  writeln('Общее количество зерна ', s, ' сорта: ', sum);
end.

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

  1. Создается программа на языке Pascal ABC с использованием структуры данных Tgranary, которая представляет собой запись с полями district (район), number (номер элеватора), cI (количество зерна 1 сорта), cII (количество зерна 2 сорта), cIII (количество зерна 3 сорта).
  2. Создается переменная Tarr, которая представляет собой массив из структур Tgranary.
  3. Создается файл f типа file of Tgranary.
  4. Задаются значения переменных n, af, b, c, sum.
  5. Запускается цикл чтения данных из файла f. В каждой итерации считывается информация о районе, номере элеватора, количестве зерна каждого сорта и записывается в переменную a[i].
  6. После завершения цикла чтения данных из файла f, считываются данные о стоимости каждого сорта.
  7. Запускается цикл записи данных в файл f. В каждой итерации считывается информация о районе, номере элеватора, количестве зерна каждого сорта и записывается в файл.
  8. После завершения цикла записи данных в файл f, считывается информация о сорте.
  9. Если сорт равен 1, то суммируется количество зерна 1 сорта.
  10. Если сорт равен 2, то суммируется количество зерна 2 сорта.
  11. Если сорт равен 3, то суммируется количество зерна 3 сорта.
  12. Выводится общее количество зерна каждого сорта.

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


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

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

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