По каналу связи передается последовательность положительных целых чисел, все числа не превышают 1000, их количество заранее неизвестно. Каждое число передается отдельно. Признаком конца передаваемой последовательности является число 0. После числа 0 передается контрольное значение – наибольшее число, которое можно получить умножением двух различных элементов последовательности. Напишите эффективную программу, которая получает последовательность чисел и следующие за ней признак конца и контрольное значение, а также проверяет правильность контрольного значения. Программа должна напечатать отчет следующего вида: Получено .. чисел Полученное контрольное значение: …. Вычисленное контрольное значение:… Контроль пройден (или – контроль не пройден)

Ответы

Ответ дал: Эклео
0
PascalABC.NET
-----------------------------
var
  a: array[1..10000] of integer;
  kz,maxp,n,i,j: integer;  
begin  
  i:=0;
  maxp:=integer.MinValue;
  writeln ('Готов к приему чисел');
  repeat
    i:=i+1;
    readln (a[i]);  
  until a[i]=0;
  n:=i-1;
  readln (kz);
  for i:=1 to n-1 do 
    for j:=2 to n do 
      if maxp<(a[i]*a[j]) then maxp:=(a[i]*a[j]);  
  writeln ('Получено ',n,' чисел');
  writeln;
  writeln ('Полученное контрольное значение: ',kz);
  writeln;
  writeln ('Вычисленное контрольное значение: ',maxp);
  writeln;
  if kz=maxp 
    then writeln ('Контроль пройден')
    else writeln ('Контроль не пройден');
end.
--------------------------------------
Результаты:
1)
Готов к приему чисел
1 2 3 4 5 0 20
Получено 5 чисел
Полученное контрольное значение: 20
Вычисленное контрольное значение: 20
Контроль пройден
2)
Готов к приему чисел
1 2 3 4 5 6 0 20
Получено 6 чисел
Полученное контрольное значение: 20
Вычисленное контрольное значение: 30
Контроль не пройден

Вас заинтересует