Предмет: Информатика,
автор: arishka122
По каналу связи передается последовательность положительных целых чисел, все числа не превышают 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
Контроль не пройден
-----------------------------
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
Контроль не пройден
Похожие вопросы
Предмет: Физика,
автор: margo9162
Предмет: Информатика,
автор: Zorikbro
Предмет: Математика,
автор: renatkostenko825
Предмет: География,
автор: Кирюшинок
Предмет: Алгебра,
автор: igor699