помогите пожалуйста задание такое (даны 3-табл A(100) b (100) c (100) известно что существуют целые числа встречающиеся во всех 3-х табличах.найти одно такое число. лучше зделать это с помощью процидур и функций.
const
n = 100;
type
T = array[1 .. n] of integer;
Function max(A, B: Integer): Integer;
Begin
{ Здесь напишешь функцию, возвращающую максимум из значений A, B }
End;
Procedure Sort(Var ar: T; n: integer);
Begin
{ Любой алгоритм сортировки, на выбор ... }
End;
var
a, b, c: T;
i, i_a, i_b, i_c: integer;
begin
{ Здесь - заполнение массивов A, B, C }
sort(a, n);
sort(b, n);
sort(c, n);
i_a := 1; i_b := 1; i_c := 1;
while not ((a[i_a] = b[i_b]) and (b[i_b] = c[i_c])) do begin
if a[i_a] < max(b[i_b], c[i_c]) then
while a[i_a] < max(b[i_b], c[i_c]) do inc(i_a);
if b[i_b] < max(a[i_a], c[i_c]) then
while b[i_b] < max(a[i_a], c[i_c]) do inc(i_b);
if c[i_c] < max(a[i_a], b[i_b]) then
while c[i_c] < max(a[i_a], b[i_b]) do inc(i_c);
end;
writeln(a[i_a]:4, b[i_b]:4, c[i_c]:4);
end.
спасибо!
а она попроще не делается а то чето алгоритм не получается у меня написать
Проще (в плане написания) только простым перебором.
find := false;
i := 1;
while (i <= 100) and not(find) do begin
j := 1;
while (j <= 100) and not(find) do begin
k := 1;
while (k <= 100) and not(find) do begin
find := (a[i] = b[j]) and (b[j] = c[k]);
if not(find) then inc(k);
end;
if not(find) then inc(j);
end;
if not(find) then inc(i);
end;
if find then writeln(a[i]);