| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- Const
- n = 10;
- Type Tname = record
- name,surname : string[20];
- phone : string[8];
- End;
- Var
- ar1 : array [1..n] of Tname;
- tmp : Tname;
- l,r,i : 1..n;
- f0 : string[20];
- k,j : 1..n;
- {--------==================---------------}
- Procedure ReadStr(name_of_file:string);
- Var
- s1 : array [1..n] of string;
- f1 : text;
- val : 1..3;
- h : 1..n;
- l : byte;
- Begin
- assign(f1,name_of_file);
- reset(f1);
- for h := 1 to n do readln(f1,s1[h]);
- Close(f1);
- val := 1;
- for h := 1 to n do
- for l := 1 to length(s1[h]) do
- begin
- if s1[h,l] <> ' ' then
- case val of
- 1: ar1[h].name := ar1[h].name+s1[h,l];
- 2: ar1[h].surname := ar1[h].surname+s1[h,l];
- 3: ar1[h].phone := ar1[h].phone+s1[h,l];
- end
- else inc(val);
- if l = length(s1[h]) then val := 1;
- end;
- End;{ReadStr}
- {-----------------------------}
- Begin
- l := 1;
- r := n;
- ReadStr('num.txt');
- for k := 1 to n do
- for j := k+1 to n do
- if ar1[j].surname < ar1[k].surname then
- begin
- tmp.surname := ar1[k].surname;
- ar1[k].surname := ar1[j].surname;
- ar1[j].surname := tmp.surname;
- tmp.name := ar1[k].name;
- ar1[k].name := ar1[j].name;
- ar1[j].name := tmp.name;
- tmp.phone := ar1[k].phone;
- ar1[k].phone := ar1[j].phone;
- ar1[j].phone := tmp.phone;
- end;
- Write('Enter surname for search in base: ');
- Readln(f0);
- while l < r do
- if ar1[(l+r) div 2].surname >= f0 then r := (l+r) div 2
- else l := (l+r) div 2+1;
- if f0 = ar1[r].surname then WriteLn(ar1[r].name,' ',ar1[r].surname,' ',ar1[r].phone)
- else WriteLn('There are no records for that surname');
- ReadLn;
- End.
|