Помогите доделать и переделать задачу!

Тема в разделе "Pascal and Delphi", создана пользователем sproject, 5 мар 2010.

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

    sproject Гость

    Задача: выполнить операции над множествами(объединение, пересечениеделение и т.д) Дано два авторынка на которых встречаются одинаковые марки машин и разные! Суть в том, что надо выполнить эти операции над этими авторынками!

    Я сделал эти операции с числами, а с названиями машин не получается! Помогите!

    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">код:</div></div><div class="sp-body"><div class="sp-content">
    Код (Text):
    program dm1;
    uses crt;
    const
    Nmax = 100;
    Nmax2 = 200;
    type
    m = array[1..Nmax] of integer;
    var
    a: m;
    b: m;
    n1, n2, i, j, t : integer;

    procedure prc(mas1, mas2: m);
    var
    itog : array [1..Nmax2] of integer;
    begin
    t := 0;
    for i := 1 to n1 do
    begin
    for j := 1 to n2 do
    begin
    if (a[i] = b[j]) then
    begin
    t := t + 1;
    itog[t] := a[i];
    end;
    end;
    end;
    writeln('Perecechenie mnojestv:');
    for i := 1 to t do
    begin
    writeln(itog[i]);
    end;
    end;

    procedure obd(mas1, mas2: m);
    var
    itog : array [1..Nmax2] of integer;
    begin
    for i := 1 to n1 do
    begin
    itog[i] := a[i];
    end;
    for i := n1+1 to n1+n2 do
    begin
    itog[i] := b[i-n1];
    end;
    for i := 1 to n1+n2 do
    begin
    for j := 1 to n1+n2 do
    begin
    if (itog[i] = itog[j]) and (i<>j) then
    begin
    itog[j] := 20034;
    end;
    end;
    end;
    for i := 1 to n1+n2 do
    begin
    if (itog[i]<>20034) then writeln(itog[i]);
    end;
    end;

    procedure raz(mas1, mas2: m);
    var
    itog : array [1..Nmax2] of integer;
    begin
    for i := 1 to n1 do
    begin
    for j := 1 to n2 do
    begin
    if (mas1[i] = mas2[j]) then mas1[i] := 20034;
    end;
    end;
    for i := 1 to n1 do
    begin
    if (mas1[i] <> 20034) then writeln(mas1[i]);
    end;
    end;

    begin
    clrscr;
    writeln('Vvedite kol-vo elementov pervogo massiva');
    readln(n1);
    writeln('Vvedite kol-vo elementov vtorogo massiva');
    readln(n2);
    writeln('Vvedite elementi pervogo massiva');
    for i := 1 to n1 do
    begin
    readln(a[i]);
    end;
    writeln('Vvedite elementi vtorogo massiva');
    for i := 1 to n2 do
    begin
    readln(b[i]);
    end;
    prc(a, B);
    readln;
    writeln('Obedinenie mnojestv');
    obd(a, B);
    readln;
    writeln('Raznost a/b');
    raz(a,B);
    readln;
    End.
     
  2. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    Вместо integer напишы string[20] и все компилится(правильность алгноритма не проверял)
    mas1 <> 20034 запишите так mas1 <> '20034'
    ну и остольные числа тоже
     
Загрузка...
Статус темы:
Закрыта.

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