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;
// PascalABC.NET 3.3, сборка 1590 от 03.12.2017 // Внимание! Если программа не работает, обновите версию!
begin var n:=ReadInteger('n='); var a:=ArrRandom(n,-50,50); a.Println; var m:=n-1; var found:=false; for var i:=0 to m do begin for var j:=0 to m do if i=j then continue else begin for var k:=0 to m do if (k=i) or (k=j) then continue else if a[i]+a[j]+a[k]=0 then begin Println('Решение:',a[i],a[j],a[k]); found:=true; break end; if found then break end; if found then break end; if not found then Writeln('Нет нужной тройки чисел') end.
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;
// Внимание! Если программа не работает, обновите версию!
begin
var n:=ReadInteger('n=');
var a:=ArrRandom(n,-50,50); a.Println;
var m:=n-1;
var found:=false;
for var i:=0 to m do begin
for var j:=0 to m do
if i=j then continue
else begin
for var k:=0 to m do
if (k=i) or (k=j) then continue
else
if a[i]+a[j]+a[k]=0 then begin
Println('Решение:',a[i],a[j],a[k]);
found:=true;
break
end;
if found then break
end;
if found then break
end;
if not found then Writeln('Нет нужной тройки чисел')
end.
Примеры
n= 13
-25 -29 41 -19 -9 50 -23 36 33 23 48 -6 -5
Решение: -25 -23 48
n= 8
-33 -23 -3 -5 -5 -20 -22 34
Нет нужной тройки чисел