Показать сообщение отдельно
Старый 22.12.2004, 14:00     # 10
Ghost
::VIP::
Звезда первого сезона
Молчун-2004
 
Аватар для Ghost
 
Регистрация: 24.08.2002
Сообщения: 1 575

Ghost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех Гуру
bad3p
Могем и написать, только объясни мне дубу, что означает:
1. ...в массив ввести типизованную константу массив...
2. ...совпадают совокупности чисел...


Вот тебе первая задачка (кажись работает):
Код:
const
  n = 30;  a: array [1..20] of byte =
    (29, 27, 25, 23, 21, 19, 17, 16, 15, 14, 13, 12, 11, 9, 7, 6, 5, 4, 2, 1);
  b: array [1..(n - 20)] of byte =
    (30, 28, 26, 24, 22, 20, 18, 10, 8, 3);
var
  c: array [1..n] of byte;
  i, j, k: integer;
begin
  i := 1;
  j := 1;
  k := 1;
  while (j <= 20) and (k <= (n - 20)) do begin
    if a[j] > b[k] then begin
      c[i] := a[j];
      inc (j);
    end else begin
      c[i] := b[k];
      inc (k);
    end;
    inc (i);
  end;
  if j > 20 then begin
    while (k <= (n - 20)) do begin
      c[i] := b[k];
      inc (k);
      inc (i);
    end;
  end else begin
    while (j <= 20) do begin
      c[i] := a[j];
      inc (j);
      inc (i);
    end;
  end;
  for i := 1 to n do write (c[i] : 3);
end.
Я так понимаю, "совподают совокупности" означает, что в строках расположены одни и те же числа, причем не важно в каком порядке... Ща попробуем...

Ага. Вот: (в проге для простоты массив Х генерируется случайным образом, состоит только из 0, 1 и 2 (чтобы точно были похожие строки) и имеет размерность 4; все это, есессно, можно легко изменить: поменять константу N и параметр вызова функции Random())
Код:
uses
  crt;

const
  n = 4;

var
  x: array [1..n, 1..n] of byte;
  i, j, k: integer;

function like(n1, n2: integer): boolean;
var
  s: set of byte;
  i, j: integer;
begin
  s := [1..n];
  for i := 1 to n do begin
    j := 0;
    repeat inc(j)
    until (j > n) or ((x[n1, i] = x[n2, j]) and (j in s));
    if j > n then break else exclude(s, j);
  end;
  like := (s = []);
end;

begin
  clrscr;
  randomize;
  writeln ('X:');
  for i := 1 to n do begin
    for j := 1 to n do begin
      x[i, j] := random(3);
      write (x[i, j]:4);
    end;
    writeln;
  end;
  writeln;
  writeln ('pohozhie:');
  k := 0;
  for i := 1 to pred(n) do for j := succ(i) to n do if like(i, j) then begin
    writeln ('x[', i:2, ']  ~ x[', j:2, ']');
    inc (k);
  end;
  writeln ('ih kolichestvo: ', k);
  writeln;
  writeln ('nepohozhie:');
  k := 0;
  for i := 1 to pred(n) do for j := succ(i) to n do if not like(i, j) then begin
    writeln ('x[', i:2, '] !~ x[', j:2, ']');
    inc (k);
  end;
  writeln ('ih kolichestvo: ', k);
  readkey;
end.
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы!

Последний раз редактировалось Ghost; 22.12.2004 в 14:52. Причина: склероZzz...
Ghost вне форума