Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ задача по масиву

Автор: kyhner 30.04.2006 18:44

помогите пожалуйста задание такое (даны 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]);


Исправил