Нужно написать программу по типо записной книжки,чтобы в нее добовлялось ФИО,телефон и хобби,и чтобы в ней был поиск по телефону,я написал вроде прогу но когда она выводит на показ запись то вместо номера она пишет 0,а при поиске ищет правельный контакт т.е. я задал контакт с номером 465 при поиске ввожу 465 и он находит этот контакт но на экрате все равно 0. Вот программа:
Program Adress_Book; uses Crt; type AdressItem = record Fio: String; Adress: String; Phone: LongInt; Ph:LongInt; end;
var Book: Array [1..10] of Adressitem; Nums, I: Byte; Code: Integer; C: Char; Quit: Boolean; IntToSt:String; StrNum:String; Ph:LongInt; tind:Integer; Tel:LongInt;
Function Search(TelNum:LongInt):Integer; Var Phone:LongInt; i:Integer; StrNum:String; IntToStr:String; Begin Phone:=Ph; Search:=-1; StrNum:=IntToStr; for i:=1 to 10 do If Book[i].Phone=1 Then Begin Search:=i; Break end; end;
Procedure New_Item; var F, A, Em: String; Ph: LongInt; begin ClrScr; Inc(Nums); if Nums > 10 then begin Write('MAx kol-vj zapisey!'); exit; end;
Writeln('Zapis N', Nums); Writeln; Write('Vvedite FIO: '); Readln(F); Write('Vvedite Xobbu: '); Readln(A); Write('Vvedite telefon: '); Readln(Ph); Writeln; with Book[Nums] do begin Fio := F; Adress := A; Phone := Ph; end; Write('NEW запись успешно добавлена!'); end;
{ процедура отображения данных отдельной записи } Procedure List_Item(N: Byte); begin if N > Nums then begin Write('Nevernui nomer'); exit; end;
With Book[N] do begin Writeln('Zapis N', N); Writeln; Writeln('FIO: ', Fio); Writeln('Hobbu: ', Adress); Writeln('Telefon: ', Ph); Writeln; end; Readln; end;
begin Quit := False; Nums := 0; repeat ClrScr; Writeln('Tel. kniga"'); Writeln('==========================='); Writeln; Writeln('Zapisi: '); Writeln('--------------------'); if Nums = 0 then Writeln('Zapisey net') else For I := 1 to Nums do Writeln(I, ' - FIO: ', Book[I].Fio); Writeln('--------------------'); Writeln; Writeln; Writeln('''a'' - Dobavit zapis'); WriteLn ('''b'' - Poisk po tel.'); Writeln('Nomer - Pokazat zapis'); Writeln('Esc - Exit'); Writeln; Write('Vash vubor: '); C := ReadKey; case C of '1'..'9': begin Val(C, I, Code); List_Item(I); end; 'a': New_Item; 'b': begin Write ('VVedite Tel.: ',Tel); ReadLn(Tel); tind:=Integer(Tel); Search(Tel); If tind <> -1 then WriteLn(Search(Tel));
List_Item(i);
WriteLn('Telefon Ne nayden: '); end;
'1'..'9': Begin Val (C,I,Code); end; #27: Quit := true; end; until Quit; end.
volvo
29.11.2007 19:40
{ процедура отображения данных отдельной записи } Procedure List_Item(N: Byte); ... With Book[N] do begin Writeln('Zapis N', N); Writeln; Writeln('FIO: ', Fio); Writeln('Hobbu: ', Adress); Writeln('Telefon: ', Phone); { <--- А что у тебя было? } Writeln; end; Readln; end;
Ты же при заполнении записи записываешь значение только в поле Phone, вот и читай оттуда же... А вообще - программа как будто специально написана на тему "Области видимости и конфликты имен": не стоит вообще пользоваться глобальными переменными, но уж если возникла такая необходимость - дай им имена, отличные от полей записи...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.