![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
дан типизированный файл который создается программой
Код:
program sozdat_file_agenstvo;
{$APPTYPE CONSOLE}
uses
SysUtils;
type agent=record
kk:byte;
et:integer;
pl:real;
cena:real;
dt:record
den:integer;
mes:integer;
god:integer;
end;end;
type kvart=file of agent;
var i,n:integer; f:kvart; k:agent;
begin
WriteLn('kol-vo kvartir: ');
Readln(n);
Assign(f, 'agenstvo.ddt');
Rewrite(f);
for i:=1 to N do begin
Writeln('opishi kvartiru ',i);
write('komnati: ');
Readln(k.kk);
write('etag: ');
Readln(k.et);
write('ploschad: ');
Readln(k.pl);
write('den registr: ');
Readln(k.dt.den);
write('mesac registr: ');
Readln(k.dt.mes);
write('god registr: ');
Readln(k.dt.god);
write('cena: ');
readln(k.cena);
write(f,k);
end;
Close(f);
end.после распечатываем содержимое следующей программой Код:
program otkrit_file_agenstvo;
{$APPTYPE CONSOLE}
uses
SysUtils;
type agent=record
kk:byte;
et:integer;
pl:real;
cena:real;
dt:record
den:integer;
mes:integer;
god:integer;
end;end;
type kvart=file of agent;
var i,n:integer; f:kvart; k:agent;
begin i:=0;
assign(f,'agenstvo.ddt');
reset(f);
While Not Eof(F) Do
begin
Inc(i);
Read(F, K);
Writeln('kvartira: ', i);
Writeln('komnati: ', K.kk);
Writeln('etag: ', K.et);
Writeln('ploschad: ',K.pl:3:0,' kv. metrov');
Writeln('data reg.: ', K.dt.den,'.',K.dt.mes,'.',K.dt.god,'g.');
writeln('cena: ',k.cena:8:2,' rubley');
writeln('----------------------------');
end;
readln;
Close(f);
end.вопрос:какое условие нужно поставить чтобы вывело 3 самых дешевых цены?(( |
|
#2
|
|||
|
|||
|
Вам надо будет пробежаться по всем записям вначале чтобы выяснить какие записи минимальны:
вообщем 1.завести надо еще один тип запись (record) с переменными : minim (мин. цена) и RecN номер записи далее объявить массив arr [1..3] тип созданная запись. 2.пробежать по всем записям в файле (пусть переменная с-цена из файла). то получим такое условие Код:
if c<arr[1].minim then begin arr[3].minim:=arr[2].minim; arr[3].RecN:=arr[2].RecN; arr[2].minim:=arr[1].minim; arr[2].recN:=arr[1].RecN; arr[1].minim:=c; arr[1].RecN:=RecNo;(Текущий номер записи) end; Примерно так, дальше шлифуйте Последний раз редактировалось Admin, 18.04.2011 в 16:26. |
|
#3
|
|||
|
|||
|
Цитата:
Код:
type zapis=record
minim:real;
recn:integer;
end;
type mass=array[1..3] of zapis;а разве не будет ошибки о несовместимости типов agent и zapis?=( Последний раз редактировалось phasha, 18.04.2011 в 17:20. |
|
#4
|
|||
|
|||
|
нет не будет вы сравниваете не всю запись а только ее часть.
например: Код:
zapis.minim<>agent.cena |
|
#5
|
|||
|
|||
|
А что, завести данные в массив, потом отсотрировать его и взять первые 3 элемента религия не позволяет?
|
|
#6
|
|||
|
|||
|
хм...а это как?
|