Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Найдите пожалуйста ошибку

Автор: joker1989 18.05.2007 20:04

Программа осуществляет поиск по введённой фамилии ( во 2:begin) и находит первую запись и выходит из поиска, а мне нужно чтобы поиск осуществлялся до конца.

program lab_9;
uses crt;
label na4;
const mas:array[1..6]of string=(
'# Atele: ',
'# Kvitancii: ',
'Data oform zakaza: ',
'Data vida4i zakaza: ',
'FIO Mastera: ',
'Vid izdeliya: ');
var fail:text;
o,zap,i,j,k:integer;
st,stp:string;
v:byte;
begin
assign(fail,'BD.txt');rewrite(fail);close(fail);
zap:=0;
na4:
clrscr;
gotoxy(15,5); write('Dly dobavleniya zapisi v BD vvedite #1#');
gotoxy(15,6);write('Dly poiska po BD vvedite #2#');
gotoxy(15,7);write('Dly prosmotra vsey BD vvedite #3#');
gotoxy(15,8);write('Dly VIHODA iz programmi vvedite #4#');
gotoxy(20,10);textcolor(2);write('Vibor: ');readln(v);
clrscr;
case v of
1:begin
append(fail);
writeln('Dly dobavleniya zapisi v BD vvedite:');
for i:=1 to 6 do
begin
write(mas[i]); readln(st);write(fail,st+'|');
end;
writeln(fail);
close(fail);
writeln('Zapis dobavlena');zap:=zap+1;
end;
2:begin
write('Vvedite FIO mastera:'); readln(st);
reset(fail);
k:=0;
for i:=1 to zap do
begin
readln(fail,stp);
if pos(st,stp)<>0 then begin k:=1; break end;
end;
if k=0 then
begin
textcolor(4);
writeln('!! Takoy zapisi net!!');
end
else
begin
i:=1;
delete(st,1,100);
for j:=1 to 6 do
begin
while stp[i]<>'|' do
begin
st:=st+stp[i];
i:=i+1;
end;
writeln(mas[k]+st);k:=k+1;
delete(st,1,100);
i:=i+1
end;
end;
close(fail);
end;
3:begin
reset(fail);
delete(st,1,100);
for o:=1 to zap do
begin
writeln('Pokazat',o,'-yu zapis');readkey;
readln(fail,stp);
i:=1;k:=1;
for j:=1 to 6 do
begin
while stp[i]<>'|' do
begin
st:=st+stp[i];
i:=i+1;
end;
writeln(mas[k]+st);k:=k+1;
delete(st,1,100);
i:=i+1;
end;
end;
end;
4:exit
end;
write('Dly prodolweniya nawmite na lubuy klaviwy');
readkey;
goto na4;
end.