![]() |
|
|
Регистрация | << Правила форума >> | 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
|
|||
|
|||
![]() хм...а это как?
|
#7
|
||||
|
||||
![]() Вот подправил, вроде работает, может и проще можно не знаю
![]() Код:
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,u:integer; f:kvart; k:agent; m: Array [1..3] of integer; mc: real; begin i:=0; u:=0; assign(f,'C:\agenstvo.ddt'); m[1]:= -1; m[2]:= -1; m[3]:= -1; For u:=1 To 3 Do begin mc:= 9999999; i:= 0; reset(f); While Not Eof(F) Do begin Inc(i); Read(F, K); if k.cena < mc Then if (m[1]<>i)and(m[2]<>i)and(m[3]<>i) Then begin mc:= k.cena; m[u]:= i; end; end; end; i:= 0; reset(f); While Not Eof(F) Do begin Inc(i); Read(F, K); if (i=m[1])or(i=m[2])or(i=m[3]) Then begin 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; end; readln; Close(f); end. If end Then begin; |
#8
|
|||
|
|||
![]() ого=))благодарю))
|