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

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

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

> Процедура
rekrut
сообщение 4.04.2007 21:40
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской
Реальное имя: vovadj

Репутация: -  0  +


Дана запись, потом вводятся компоненты и записываются в файл, надо сделать процедуру которая открывает файл и находит страну производителя, продукции которой больше всего в магазине:



Unit MODUL;
Interface
type magazin=record
name,cont:string; {название товара и страна производитель (cont)}
price:integer; {цена товара}
wyear:integer; {гарантия (лет)}
End;{magazin}
Procedure con;
Var
f:file of magazin;
frm:magazin;
Implementation
Procedure con; {нахождение страны, товаров из которой больше всего}
Var i,max:integer;
Begin
Assign(f,'D:\db.dat');
reset(f);
max:=1;
for i:=1 to filesize(f) do
read(f,frm);
begin
if max<frm.kod then max:=frm.kod;
end;
reset(f);
for i:=1 to filesize(f) do
begin
read(f,frm);
if frm.kod>=max then writeln('товара больше всего из ',frm.cont,');
end;
close(f);
end;
End. {Unit}



В самой процедуре не знаю как сделать поиск или как определить что товара больше всего из тако то страны . Помогите пожалста!!!

Сообщение отредактировано: rekrut - 4.04.2007 21:42
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 4.04.2007 23:44
Сообщение #2


Гость






function find_country: string;
var
country_count: array[1 .. 100] of record
country: string[20];
count: integer;
end;
counter: integer;
f: file of magazin;
R: magazin;
found: boolean;

begin
counter := 0;
assign(f, 'db.dat'); reset(f); { <--- Никаких проверок нет - добавишь сам }

while not eof(f) do begin
read(f, R);
found := false;
for i := 1 to counter do
if country_count[i].country = R.cont then begin
inc(country_count[i].count); found := true; break;
end;

// Не было найдено такой страны - добавляем ее в массив
if not found then begin
inc(counter);
with country_count[counter] do begin
country := R.cont; count := 1;
end;
end;

end;
close(f);

// Ну, а теперь просто пройди по всему массиву country_count, найди
// название страны, соответствующее максимальному значению поля count,
// и верни его как результат функции
end;


Как видишь, я немного ограничил длину названия страны - до 20 символов, чтобы не забирать из стека слишком много места...

P.S. Набирал прямо здесь, без компилятора - код просто для того, чтобы показать идею !!!
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



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