Вывести общее количество зерна (в центнерах) отдельно каждого сорта для каждого района - 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 сорта.
- Выводится общее количество зерна каждого сорта.