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

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

Дан массив из N целых чисел а₁,а₂...аⁿ.Вам нужно проверить,есть ли в этом массиве три числа сумма которых равна нулю. можете сделать программу


Информатика (15 баллов) | 31 просмотров
Дано ответов: 2
0 голосов
Правильный ответ
// 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.

Примеры
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
Нет нужной тройки чисел
(150k баллов)
0 голосов

Var i,j,k,n,sum:integer;
 input,output:text;
a:array[1..100] of integer;
flag:boolean;
begin flag:=false;
Assign(Input,'d.in');
reset(input);
readln(input,n);
assign(output, 'd.out');
rewrite(output);
writeln('Input elements');
readln (n);
for i:=1 to n do read(a[i]);
for i:=1 to n do 
for j:=1 to n do 
for k:=1 to n do 
if (i<>j) and (j<>k) and (i<>k) then
 if a[i]+a[j]+a[k]=0 
then
begin
writeln (output,'Yes');
flag:=true;
halt;
end;
if flag=false then writeln(output,'No');
close(input);
close(output);
end.

(30 баллов)