Написать программу “Телефонный справочник”, которая обрабатывает данные об абонентах телефонной станции. Каждый абонент имеет имя, адрес, телефонный номер. В программе описать массив абонентов (назовем его справочник). В справочнике должно быть не менее 20 элементов, которые заполняются либо программно, либо считываются из файла.С помощью индексов и фильтров выбрать тех абонентов, которые имеют номер в заданном диапазоне — Pascal(Паскаль)

uses
    crt;
const
    N=20;
Type
    phone = record
        FIO:string[50];
        Adress:string[50];
        Number:integer;
    end;
var
    rec: phone;
    sel,quit,i,s1,s2,L:integer;
    s:string;
    a,b: array[0..n] of phone;
    f1: file of phone;
    
procedure searchnumber(beNum,enNum:integer);
var
    i:integer;
begin
    L:=0;
    rec.adress:='';
    rec.FIO:='';
    rec.number:=0;
    L:=0;
    for i:=1 to n do b[i]:=rec;
    for i:=1 to n do
        if (a[i].Number>beNum) and (a[i].Number<enNum) then
            begin
                inc(L);
                b[L]:=a[i]; 
            end;
end;
 
procedure writephone(h: array of phone;K:integer);
var
    i:integer;
begin
    writeln('|      FIO       |         Adres     |  Nomer |');
    for i:=1 to K do
        begin
            writeln(h[i].fio:16,h[i].adress:21,h[i].number:9);
        end;
end;
 
begin
    clrscr;
    assign(f1,'Phone.txt');
    randomize;
    L:=0;
    quit:=0;
    while quit<>1 do
        begin
            clrscr;
            writeln('-----------------------');
            writeln('Laboratornaya rabota #4');
            writeln('1. Zapolnenie Spravo4nika');
            writeln('2. Poisk');
            writeln('3. Polniy prosmotr');
            writeln('4. Exit');
            writeln('-----------------------');
            readln(sel);
            case sel of
                1:
                    begin
                        clrscr;
                        writeln('-----------------------');
                        writeln('1. Vru4nuy');
                        writeln('2. File');
                        writeln('-----------------------');
                        readln(sel);
                        case sel of
                            1:
                                begin
                                    clrscr;
                                    writeln('Zapolnenie spravo4nika:');
                                    for i:=1 to n do
                                        begin
                                            writeln('Abonent #',i);
                                            writeln('---------------------------');
                                            writeln('Vvedite FIO');
                                            readln(a[i].Fio);
                                            writeln('Vvedite Adress');
                                            readln(a[i].adress);
                                            writeln('Vvedite Nomer');
                                            readln(a[i].number);
                                            writeln('---------------------------');
                                        end;
                                    clrscr;
                                    writeln('Zapisat Tekushiy vibor v fail? (y/any)');
                                    readln(s);
                                    if s='y' then
                                        begin
                                            rewrite(f1);
                                            for i:=1 to n do
                                                begin
                                                    rec:=a[i];
                                                    write(f1,rec);
                                                end;
                                            close(f1);
                                        end;
                                end;
                            2:
                                begin
                                    clrscr;
                                    reset(f1);
                                    i:=0;
                                    while Not Eof(f1) Do
                                        begin
                                            i:=i+1;
                                            read(f1,a[i]);
                                        end;
                                    close(f1);
                                    writephone(a,N);
                                    readln;
                                end; 
                        end;  
                    end;
                2:
                    begin
                        clrscr;
                        writeln('Vvedite na4alo diapazona NUMBER ');
                        readln(s1);
                        writeln('Vvedite konec diapazona NUMBER ');
                        readln(s2);
                        searchnumber(s1,s2);
                        writephone(b,L);
                        readln;
                    end;
                3:
                    begin
                        clrscr;
                        writephone(a,N);
                        readln;
                    end;
                4:
                    begin
                        quit:=1;
                    end;
            end;
        end; 
end.

Leave a Comment

78 − = 73