ПОМОГИТЕ исправить ошибку ПЛИЗ!
Программа компилируется прекрасно, стало быть "ошибка" - это неправильная работа? Без исходных данных и указания точного места ошибки вопрос останется без ответа.
Кому охота ползать по ТАКОЙ программе в поисках непонятно какой ошибки?
if length(fio)<>0 then
begin
write(' BB adres - '); readln(bf.adres);
write(' BB tel - '); readln(bf.tel);
read(ff,bf);
close(ff);
new(n);
read(ff,bf);непонятен смысл этой строки, если было думано внести звпись в файл то писать надо было write(ff,bf)
проблема вот вчем:
нужно сделать программу Телефонный справочник
1-добавить (фамилию адрес телефон) при этом вывести список
2 -удалить (то же самое)
добавление работает неправильно
люди добрые
помогите сделать чтоб работало (ибо до конца я не понимаю в этих указатель (каюсь))
Если выложите полностью все условия задачи, то я попробую написать код заново... Т.к то, что выложено вами ранее написано так криво что проще переписать всё заново...
program z13;
uses crt;
type
sp=^kniga;
kniga= record
fio: string[50];
adres:string;
tel:longint;
l:sp;
end;
var
ff: file of kniga;
bf: kniga;
top,p,t,n:sp;
fio,ffio:string[50];
adres,fadres:string;
y,k:integer;
tel,ftel:longint;
r:real;
flag:integer;
{процедура создания файла}
procedure pr(var top:sp);
var
p,t,n:sp;
fio:string[50];
adres:string;
tel:longint;
begin
if flag=0 then begin
top:=nil;
flag:=1;
end;
clrscr;
repeat
write('BB fio - '); readln(bf.fio);
if length(fio)<>0 then begin
write(' BB adres - '); readln(bf.adres);
write(' BB tel - '); readln(bf.tel);
read(ff,bf);
close(ff);
new(n);
n^.adres:=adres;
n^.fio:=fio;
n^.tel:=tel;
n^.l:=nil;
t:=top;
p:=nil;
while (t<>nil) and (fio>t^.fio) do begin
p:=t; t:=t^.l;
end;
if p=nil then begin
n^.l:=top; top:=n;
end
else begin
n^.l:=p^.l; p^.l:=n;
end;
end;
until length(fio)=0;
t:=top;
clrscr;
writeln('spisok');
while t<>nil do begin
write( t^.fio,' ');
write( t^.adres,' ');
writeln( t^.tel,' ');
t:=t^.l;
end;
readln;
end;
{процедура удаления файла}
procedure pdelete(var top:sp);
var
p,t,n:sp;
ffio,fio:string[50];
fadres:string;
ftel:longint;
f:real;
begin
f:=0;
t:=top;
clrscr;
writeln('кого удалить? (fio,adres,tel) ');
readln( ffio); readln( fadres); readln( ftel);
repeat
if (t^.fio = ffio) and (t^.adres = fadres) and (t^.tel = ftel) then begin
p^.l:=t^.l;
dispose(t);
write( ffio,' ');
write( fadres,' ');
write( ftel,' ');
writeln( 'удален');
f:=1;
end;
t:=t^.l;
until t=nil;
if f=0 then begin
writeln('в списке нет искомого человека');
readln;
end;
t:=top;
writeln('spisok');
while t<>nil do begin
write( t^.fio,' ');
write( t^.adres,' ');
writeln( t^.tel,' ');
t:=t^.l;
end;
readln;
end;
{основная программа (меню)}
begin
assign(ff,'kniga.dat');
reset(ff);
flag:=0;
clrscr;
repeat
writeln('1 - добавить');
writeln('2 - удалить');
writeln('3 - выйти');
readln(y);
clrscr;
case y of
1: {writeln('1- процедура выполнена');} pr(top);
2: {writeln('2- процедура выполнена');} pdelete(top);
end;
if y>3 then
writeln('ошибка ввода');
until y=3;
end.
lapp посмотри пожалуйста
Заранее ОГРОМНОЕ СПАСИБО
Mapa, ты знаешь, Rolsik в чем-то прав... Ту программу, которую ты привела, легче переписать заново, чем исправить... Ну, смотри, что происходит...
Возьмем, например, процедуру создания файла... Почему ты в этой же процедуре занимаешься добавлением элементов в список? Смысл в этом какой? Плюсы есть? Вот минус я тебе приведу: если тебе вдруг понадобится в другом месте программы внести в список ЕЩЕ один элемент, ты будешь переписывать тот же код...
Дело все в том, что программы для работы с динамическими структурами должны строиться по принципу "разделяй и властвуй": добавить элемент в список - отдельная процедура, удалить элемент из списка - отдельная (НЕ привязываясь к файлам)... Распечатка списка - третья процедура... А потом из этих "кирпичиков" создавать программу... А не делать все одним "бетонным блоком". Уж очень этот блок неповоротливым получается...
Mapa, я посмотрел, но диагноз неутешительный.. Действительно много ошибок и переделка нужна большая. Если ты сама писала этот код - продолжай задавать конкретные вопросы. Если нет - лучше с нуля по рекомендациям volvo и Rolsik'а. А может, и в любом случае лучше с нуля.. С блок-схемы.