Помощь - Поиск - Пользователи - Календарь
Полная версия: куча записей. нужно посчитать максимальные
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
-StRaNNiK-
Такая задача:
Цитата
Завод выпускает продукцию 5 видов. Сведения о производстве хранятся в файле. Определить, какой продукции выпускается больше всего по кличеству и по стоимости в течение 3-х дней. Данные регистрируются ежедневно

Первую часть сделал. Данные регистрируются и записываются в файл:
type
production = record
name: String[20];
cena: real;
kol:integer;
end;
var
fajlo: file of production;
i,j:integer;
a: array [1..5] of production;
temp:production;
begin
Assign(fajlo,'fajlo');
ReWrite(fajlo);
writeln('Введите 5 наименований выпускаемой продукции:');
for i:=1 to 5 do
readln(a[i].name);
for i:=1 to 3 do begin
Writeln('--------День ',i,'--------');
for j:=1 to 5 do begin
WriteLn('Введите цену 1 товара: ',a[j].name);
ReadLn(a[j].cena);
WriteLn('Введите кол-во выпущенного товара');
ReadLn(a[j].kol);
Write(fajlo,a[j]);//запись о товаре в i день записалась в файл
end;
end;
Reset(fajlo); //закрываем файл и открываем на чтение


Вроде все работает. Т.е. если сейчас посмотреть каждую позицию файла, то мы увидим следующее:
Цитата
позиция файла:
0 день 1 товар1
1 день 1 товар2
2 день 1 товар3
3 день 1 товар4
4 день 1 товар5

5 день 2 товар1
6 день 2 товар2
7 день 2 товар3
8 день 2 товар4
9 день 2 товар5

10 день 3 товар1
11 день 3 товар2
12 день 3 товар3
13 день 3 товар4
14 день 3 товар5
товар_X - запись с инфой о товаре X

Вот теперь нужно как-то посчитать суммарное кол-во выпущенного каждого товара, сравнить и вывести, какого выпустили больше. Тоже самое нужно повторить и со стоимостью.
Что-то вообще не пойму, как это сделать. Циклы, а как их построить не могу понять sad.gif
volvo
Как-то вот так:
...
for i := 1 to 5 do
with a[i] do begin
cena := 0; kol := 0;
end;

while not eof(fajlo) do begin
read(fajlo, temp);
for i := 1 to 5 do
if temp.name = a[i].name then begin
a[i].cena := a[i].cena + temp.cena;
inc(a[i].kol, temp.kol);
end;
end;
close(fajlo);

max_cena := 1;
max_kol := 1;
for i := 1 to 5 do
with a[i] do begin
if cena > a[max_cena].cena then max_cena := i;
if kol > a[max_kol].kol then max_kol := i;
end;
writeln('max(cena): ', a[max_cena].name, ' = ', a[max_cena].cena:10:5);
writeln('max(kol) : ', a[max_kol ].name, ' = ', a[max_kol ].kol:10);
...

Не забудь дополнительно определить переменные:
var
max_cena, max_kol: integer;
-StRaNNiK-
volvo, огромное Вам спасибо. Вы меня ТАК выручили!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.