Поиск на Паскале

Тема в разделе "Pascal and Delphi", создана пользователем -, 30 июн 2010.

  1. Гость

    Написала программу на Паскале "Информация о вкладчиках банка" с менюшкой, не хватает только поиска по фамилии, не помню как это делается. Помогите!!!)
    Код (Text):
    program  menyu;
    uses crt;
    type
    trec=record
    fam,name,work:string;
    kv,house:integer;
    street:string;
    mark:array[1..9] of integer;

    end;
    tmas=array[1..7]of trec;
    tmas1=array[1..8]of string;
    const form:tmas1=('=============================================',
    '|Фамилия___________|________________________|',
    '|Имя_______________|________________________|',
    '|Адрес_______улица_|________________________|',
    '|____________дом___|________________________|',
    '|____________кв.___|________________________|',
    '|Место_работы______|________________________|',
    '=============================================');
    var
    m:trec;
    ch,cha1:char;
    s,s1,n,p,x,y,i,gd,gm,k:integer;
    a:array[1..7]of string;
    b,r:tmas;
    {========================================================}
    procedure Vivform;
    var v,d:integer;
    begin
    clrscr;
    for v:=1 to 8 do
    writeln(form[v]);
    end;
    {============================================================}
    Procedure Vvod(s:integer;var b:tmas);
    var i,x1,y1:integer;
    ss:string;
    begin
    k:=0;
    window(1,1,70,60);
    clrscr;
    textcolor(green);
    repeat
    k:=k+1;
    vivform;
    with b[k] do begin
    gotoxy(23,2);
    readln(fam);
    gotoxy(23,3);
    readln(name);
    gotoxy(23,4);
    readln(street);
    gotoxy(23,5);
    readln(house);
    gotoxy(23,6);
    readln(kv);
    gotoxy(23,7);
    readln(work);
    gotoxy(2,9);
    writeln('Ввести еще информация о вкладчиках? (d\n)');
    readln(ss);
    end;
    {k:=k+1;
    s:=s+1;}
    until ss<>'d';
    end;
    {============================================================}
    procedure Vivodnogo(k:integer);
    begin
    clrscr;
    vivform;

    with b[k] do begin
    gotoxy(23,2);
    writeln(fam);
    gotoxy(23,3);
    writeln(name);
    gotoxy(23,4);
    writeln(street);
    gotoxy(23,5);
    writeln(house);
    gotoxy(23,6);
    writeln(kv);
    gotoxy(23,7);
    writeln(work);
    end;
    end;
    {============================================================}
    procedure Print(ss,ff:integer;b:tmas);
    var i,x1,y1,l:integer;
    i1:string;
    begin
    {vivform; }
    window(1,1,70,60);
    clrscr;
    textcolor(white);
    for l:=1 to k do begin
    vivodnogo(l);
    readln;
    end;
    end;
    {==================================================================}
    procedure Editor;
    var h,code:integer;
    ss,m:string;
    begin
    clrscr;
    for h:=1 to k do begin
    clrscr;
    vivodnogo(h);
    writeln;
    writeln('Внести изменения об этом пользователе? (d/n);');
    readln(m);
    if m='n' then continue;
    with b[h] do begin
    gotoxy(23,2);
    readln(ss);
    if ss<>'' then fam:=ss;
    gotoxy(23,3);
    readln(ss);
    if ss<>'' then name:=ss;
    gotoxy(23,4);
    readln(ss);
    if ss<>'' then street:=ss;
    gotoxy(23,5);
    readln(ss);
    if ss<>'' then work:=ss;
    gotoxy(23,6);
    readln(ss);
    if ss<>'' then val(ss,house,code);
    gotoxy(23,7);
    readln(ss);
    if ss<>'' then val(ss,kv,code);
    end;
    end;
    end;
    {==================================================================}
    {Procedure search;}
    {============================================================}

    procedure sortirovka;
    var i,j:byte;t:boolean;
    begin
    for i:=1 to k-1 do
    for j:=k downto i+1 do
    begin
    t:=b[j].fam<b[j-1].fam;
    if t then begin
    m:=b[j]; b[j]:=b[j-1];b[j-1]:=m;
    end;
    end;
    end;
    {========================================================================}
    begin
    clrscr;
    k:=0;{KOL-VO vkladchikov}
    repeat
    a[1]:='1.Ввод';
    a[2]:='2.Вывод';
    a[3]:='3.Редактирование';
    a[4]:='4.Поиск';
    a[5]:='5.Выход';
    a[6]:='6.Сортировка';
    clrscr;
    textcolor(white);
    gotoxy(26,8);
    writeln('ИНФОРМАЦИЯ О ВКЛАДЧИКАХ БАНКА');
    x:=30;y:=10;{gotoxy(1,1);}
    for i:=1 to 6 do begin
    gotoxy(x,y);
    writeln(a[i]);
    y:=y+1;
    end;
    gotoxy(30,10);
    textcolor(green);
    writeln(a[1]);
    n:=10;s1:=1;x:=30;
    repeat
    ch:=readkey;
    s:=n;
    if ord(ch)=0 then begin cha1:=readkey;
    if ord(cha1)=72 then n:=s-1;
    if ord(cha1)=80 then n:=s+1;
    if n=9 then n:=15;
    if n=16 then n:=10;
    textcolor(6);
    gotoxy(x,s);
    s1:=s-9;
    writeln(a[s1]);
    textcolor(17);
    gotoxy(x,n);
    s1:=n-9;
    writeln(a[s1]);
    end;
    until ord(ch)=13;
    case s1 of
    1:Vvod(1,b);
    2:Print(1,k,b);
    3:Editor;
    { 4:Search;  }
    5:exit;
    6:sortirovka;
    end;
    until s1=7;
    readln;
    end.
     
  2. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    У вас есть масив, с вкладчиками, считываем фамилию с клавы и ищем в масиве
    Код (Delphi):
    for i:=1 to длинаЯ_масива do
    if масив[i].фамилия=нужная_фамилия then выводим инфу
     
Загрузка...

Поделиться этой страницей