Pascal [множества]

Тема в разделе "Свободное общение", создана пользователем AILEKCAHdP, 24 июн 2009.

Статус темы:
Закрыта.
  1. AILEKCAHdP

    AILEKCAHdP Гость

    Написать программу, в которой для конечных упорядоченных множеств реализовать все основные операции (Объединением,Пересечением,Разностью,Симметрической разностью) с помощью алгоритма типа слияния . Допустима организация множеств в виде списка или в виде массива.
    1. На вход подаются два упорядоченных множества A и B (вводятся с клавиатуры, элементы множеств – буквы латинского алфавита).
    2. После ввода множеств выбирается требуемая операция (посредством текстового меню, вводом определенного символа в ответ на запрос – выбор по желанию автора).
    3. Программа посредством алгоритма типа слияния определяет результат выбранной операции и выдает его на экран с необходимыми пояснениями. Одновременно с результатом на экране должны присутствовать и исходные множества.
    4.Возврат на п.2 (выбор операции).
    5. Завершение работы программы – из п.2 (например, по ESC).

    Множества ввожу ,а дальше никак.Подскажите как правильно процедуры описать,чтобы их можно было в меню вызывать.


    Код (Text):
    Program dm1;
    uses crt;
    Type
    Simvol = set of 'a'..'z';
    Var
    A,B:simvol;
    i:integer;
    x,key:char;
    begin
    A:=[];
    B:=[];
    i:=1;
    repeat
    clrscr;
    writeln(' Vvedite ',i,'-y element mnogestva A ');
    readln(x);
    if (x in A)
    then
    begin
    writeln(x,' uje sodergitsya v mnogestve A ');
    i:=i-1;
    end
    else
    begin
    writeln(x,' pomeschon v mnogestvo A ');
    A:=A+[x];
    end;
    i:=i+1;
    until i>5;
    i:=1;
    repeat
    clrscr;
    writeln(' Vvedite ',i,'-y element mnogestva B ');
    readln(x);
    if (x in B)
    then
    begin
    writeln(x,' uje sodergitsya v mnogestve B ');
    i:=i-1;
    end
    else
    begin
    writeln(x,' pomeschon v mnogestvo B ');
    B:=B+[x];
    end;
    i:=i+1;

    until i>5;
    clrscr;
    writeln('    mnojestvo A: ');
    writeln;
    for x:='A' to 'z' do if x in A then write(x,' ');
    writeln;
    writeln('    mnojestvo B: ');
    writeln;
    for x:='A' to 'z' do if x in B then write(x,' ');
    procedure obyedinenie(c:chat):simvol;
    begin
    C:=A+B;
    writeln(C);
    end;
    procedure perese4enie(c:chat):simvol;
    begin
    C:=A*B;
    writeln(C);
    end;
    procedure raznosty(c:chat):simvol;
    C:=A-B;
    writeln(C);
    repeat
    clrscr;
    writeln('===========================');
    writeln('1: obyedinenie');
    writeln('2: perese4enie');
    writeln('3: simmetr. raznosty');
    writeln('4: raznosty');
    writeln('o: vyhod');
    key:=readkey;
    clrscr;
    case key of
    '1': obyedinenie();
    '2': perese4enie();
    '3': simmetr();
    '4': raznosty();

    until key='0';
    end.
     
Загрузка...
Статус темы:
Закрыта.

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