Вывести общее количество зерна (в центнерах) отдельно каждого сорта для каждого района - 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.
Объяснение кода листинга программы
- Создается программа на языке Pascal ABC с использованием структуры данных
Tgranary
, которая представляет собой запись с полямиdistrict
(район),number
(номер элеватора),cI
(количество зерна 1 сорта),cII
(количество зерна 2 сорта),cIII
(количество зерна 3 сорта). - Создается переменная
Tarr
, которая представляет собой массив из структурTgranary
. - Создается файл
f
типаfile of Tgranary
. - Задаются значения переменных
n
,af
,b
,c
,sum
. - Запускается цикл чтения данных из файла
f
. В каждой итерации считывается информация о районе, номере элеватора, количестве зерна каждого сорта и записывается в переменнуюa[i]
. - После завершения цикла чтения данных из файла
f
, считываются данные о стоимости каждого сорта. - Запускается цикл записи данных в файл
f
. В каждой итерации считывается информация о районе, номере элеватора, количестве зерна каждого сорта и записывается в файл. - После завершения цикла записи данных в файл
f
, считывается информация о сорте. - Если сорт равен 1, то суммируется количество зерна 1 сорта.
- Если сорт равен 2, то суммируется количество зерна 2 сорта.
- Если сорт равен 3, то суммируется количество зерна 3 сорта.
- Выводится общее количество зерна каждого сорта.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д