Дан массив из N целых чисел а1, а2, ..., an. Вам нужно проверить, есть ли в этом массиве...

0 голосов
34 просмотров

Дан массив из N целых чисел а1, а2, ..., an. Вам нужно проверить, есть ли в этом массиве три числа сумма которых равна нулю.


Информатика (43 баллов) | 34 просмотров
Дан 1 ответ
0 голосов

Procedure TForm1.Button1Click(Sender: TObject);
var
  i1,i2,i3 : Integer;
  m : array [1..10] of Integer;
  kk : Integer;
begin
  Memo1.Clear;
  for i1 := 1 to 10 do
  begin
    m[i1]:= Random(10)-5;
    Memo1.Lines.Append('m['+inttostr(i1)+'] = '+inttostr(m[i1]));
  end;
  Memo1.Lines.Append('');
  kk := 0;
  for i1 := 1 to 10-2 do
  begin
    for i2 := i1+1 to 10-1 do
    begin
      for i3 := i2+1 to 10 do
      begin
        if ( (m[i1]+m[i2]+m[i3])=0) then
        begin
          inc(kk);
          Memo1.Lines.Append('Индекс = '+inttostr(i1)+'  '+inttostr(i2)+'  '+inttostr(i3)+'      Значение = '+inttostr(m[i1])+'  '+inttostr(m[i2])+'  '+inttostr(m[i3]));
        end;
      end;
    end;
  end;
  Memo1.Lines.Append('');
  if kk>0 then
    Memo1.Lines.Append('Да в этом массиве есть три числа сумма которых равна нулю')
  else
    Memo1.Lines.Append('Нет в этом массиве три числа сумма которых равна нулю');
  Memo1.Lines.Append('Количество комбинаций = '+inttostr(kk));
end;



image
(424 баллов)