помогите пожалуйста задание такое (даны 3-табл A(100) b (100) c (100) известно что существуют целые числа встречающиеся во всех 3-х табличах.найти одно такое число. лучше зделать это с помощью процидур и функций.
volvo
30.04.2006 20:01
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.
Вот и все...
kyhner
1.05.2006 0:42
спасибо! а она попроще не делается а то чето алгоритм не получается у меня написать
klem4
1.05.2006 15:31
Проще (в плане написания) только простым перебором.
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]);
Исправил
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.