Форум «Всё о Паскале» _ Задачи _ записи - структура (пару вопросов)
Автор: felmor 22.05.2009 21:13
Доброго времени суток. Очень требуется Ваша помощь. Возникла маленькая проблема в данном коде, дело в том что я незнаю как поставить правильно запрос в данной процедуре (в основном коде я её выделил):
Код
procedure search; var j,men:integer; begin reset(meter); read(meter,i); close(meter); reset(t); j:=1; read(t,str); men:=str.cost; for j:=2 to i do begin read(t,str); if men>deposit.cost then men:=str.client.cost;[B]<<<проблема тут(задание- см.ФОТО[/B] end; close(t); reset(t); for j:=1 to i do begin read(t,str); if min=str.cost then begin clrscr; writeln(j,' firm - ',str.firm); writeln(' cena- ',str.cost); writeln(' type - ',str.type); writeln(' money '); writeln(' deposit - ',str.client.deposit); writeln(' procent - ',str.client.proc); writeln(' ne vipl summa - ',str.client.npaid); TextColor(15); readln; end; end; TextColor(15); writeln(' press any key '); readln; end;
Я думаю тут особо копатся в программе не надо, что бы понят как сделать правильно Надеюсь на вашу помощь
ВЕСЬ КОД ПРОГРАММЫ:
Код
Program felkurs; uses crt,graph; type person =record proc:byte; deposit:byte; npaid:integer; end;
structure= record firm:string[25]; cost:integer; type:string[25]; client:person; end; constructions = file of structure; little = file of byte; var i,v:byte; t:constructions; meter:little; str:structure;
procedure enter;
label 1,2,3,4,5,6,7; begin clrscr; writeln(' enter type stroeniya'); 6:readln(str.type); if str.type='' then begin TextColor(9+111); writeln(' vi ne vveli type'); writeln; TextColor(15); writeln(' poprobuyte vvesti snova'); goto 6; end; writeln(' enter ',i,' cost'); 7:readln(str.cost); if str.cost='' then begin TextColor(9+111); writeln(' vi ne vveli cost'); writeln; TextColor(15); writeln(' poprobuyte vvesti snova'); goto 7; end; writeln(' vvedite firm'); 3:readln(str.firm); if str.firm ='' then begin TextColor(9+111); writeln(' vi ne vveli firm '); writeln; TextColor(15); writeln(' poprobuyte vvesti snova'); goto 3; end; writeln(' vvedite client'); 1:writeln(' npaid'); readln(str.client.npaid); if str.client.npaid >=32 then begin TextColor(9+111); writeln(' error of input '); TextColor(15); goto 1; end; 2:writeln(' deposit'); readln(str.client.deposit); if str.client.deposit >=13 then begin TextColor(9+111); writeln(' error of input '); TextColor(15); goto 2; end; writeln(' proc'); readln(str.client.proc); writeln; TextColor(15); writeln(' press any key '); readln; end;
procedure output; var m,j,s:integer; begin s:=2; reset(meter); read(meter,i); close(meter); clrscr; for j:=1 to i do begin reset(t); read(t,str); TextColor(2); writeln(j,' firm - ',str.firm); writeln(' cena- ',str.cost); writeln(' type - ',str.type); writeln(' money '); writeln(' deposit - ',str.client.deposit); writeln(' procent - ',str.client.proc); writeln(' ne vipl summa - ',str.client.npaid); if (j=s) and (s<i) then begin writeln; TextColor(15); writeln(' next'); TextColor(15); readkey; s:=s+2; m:=i-j-2; clrscr; end; end; writeln; TextColor(15); writeln(' press any key'); readkey; close(t); end;
[B]procedure search; var j,men:integer; begin reset(meter); read(meter,i); close(meter); reset(t); j:=1; read(t,str); men:=str.cost; for j:=2 to i do begin read(t,str); if men>deposit.cost then men:=str.client.cost; end; close(t); reset(t); for j:=1 to i do begin read(t,str); if min=str.cost then begin clrscr; writeln(j,' firm - ',str.firm); writeln(' cena- ',str.cost); writeln(' type - ',str.type); writeln(' money '); writeln(' deposit - ',str.client.deposit); writeln(' procent - ',str.client.proc); writeln(' ne vipl summa - ',str.client.npaid); TextColor(15); readln; end; end; TextColor(15); writeln(' press any key '); readln; end;[/B]
procedure searchname; var client:string; j,k:integer; label 1; begin reset(meter); read(meter,i); close(meter); clrscr; TextColor(15); writeln(' enter client'); TextColor(15); 1: readln(client); if client='' then begin TextColor(9+111); writeln(' vi ne vveli client'); writeln; TextColor(15); writeln(' vvedite snova'); goto 1; end; reset(t); k:=0; for j:=1 to i do begin read(t,str); if client=str.firm then begin k:=k+1; TextColor(15); writeln(j,' firm - ',str.firm); writeln(' cena- ',str.cost); writeln(' type - ',str.type); writeln(' money '); writeln(' deposit - ',str.client.deposit); writeln(' procent - ',str.client.proc); writeln(' ne vipl summa - ',str.client.npaid); writeln('for continue press any key'); readln; end; end; if k=0 then begin TextColor(15); writeln(' isn.t found'); end; writeln; TextColor(13); writeln(' press any key'); readln; end;
begin
assign(t,'str.to'); assign(meter,'meter.to'); repeat clrscr; TextColor(15); writeln(' choose variant'); TextColor(15); writeln(' 1-enter new structure'); writeln(' 2-add structure'); writeln(' 3-output all data'); writeln(' 4-search clients deposit < str'); writeln(' 5-search at name of client'); TextColor(15); writeln(' 6-quit'); readln(v); case v of 1:receipt; 2:addition; 3:output; 4:search; 5:searchname; end; until v=6; end.
Автор: volvo 22.05.2009 22:05
У тебя не сказано, что надо искать какие-то минимумы. Достаточно:
reset(t); while not eof(t) do begin read(t, str); if str.cost > str.client.deposit then begin { Здесь выводишь нужные данные, условие выполнено } end; end;