IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> куча записей. нужно посчитать максимальные, значения элементов
-StRaNNiK-
сообщение 10.12.2005 21:12
Сообщение #1


Гость






Такая задача:
Цитата
Завод выпускает продукцию 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
сообщение 10.12.2005 21:57
Сообщение #2


Гость






Как-то вот так:
...
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-
сообщение 10.12.2005 23:27
Сообщение #3


Гость






volvo, огромное Вам спасибо. Вы меня ТАК выручили!
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 1.07.2025 16:39
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"