Вопрос задан 07.10.2023 в 08:04. Предмет Информатика. Спрашивает Сидоров Дима.

) На обработку поступает последовательность из четырёх целых чисел. Нужно написать программу,

которая выводит на экран количество неотрицательных чисел последовательности и их произведение. Если неотрицательных чисел нет, требуется вывести на экран «NO». Известно, что вводимые числа по абсолютной величине не превышают 10. Программист написал программу неправильно, надо найти ошибку var p,i,x,count: integer; begin count := 0; p := 0; for i := 1 to 4 do begin read (x); if x >= 0 then begin p := p*x; count := count+1 end end; if count > 0 then begin writeln(х); writeln(p); end else writeln('NO') end
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Кузнецов Даниил.

Ошибки

var p,i,x,count: integer;

begin

count := 0;

p := 0 ;

for i := 1 to 4 do begin

read (x);

if x >= 0 then begin

p := p*x;

count := count+1

end

end;

if count > 0 then begin

writeln(х );

writeln(p);

end

else

writeln('NO')

end

  1. Переменная p в начале равняется нулю. В эту переменную будет записываться общее произведение неотрицательных чисел, умножая p на каждое неотрицательное число, но при умножении любого числа на 0 произведение будет 0, поэтому нужно в начале присвоить ей единицу
  2. В конце выводится последнее введённое число, а нужно вывести количество
  3. После end не стоит точка

Правильный вариант программы

var p,i,x,count: integer;

begin

count := 0;

p := 1;

for i := 1 to 4 do begin

read (x);

if x >= 0 then begin

p := p*x;

count := count+1

end

end;

if count > 0 then begin

writeln(count);

writeln(p);

end

else

writeln('NO')

end.

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

В данном фрагменте кода есть несколько ошибок:

  1. Ошибка в использовании символа >. Вместо него нужно использовать знак сравнения >.
  2. Отсутствует объявление переменной x.
  3. Ошибка в выводе результатов. Должны выводиться значения переменных count и p, а не х и p.
  4. Программа не учитывает ограничение по абсолютной величине чисел, которое должно быть в пределах от -10 до 10.

Исправленный код:

pascal
var p, i, x, count: integer; begin count := 0; p := 1; // Исправлено: начальное значение произведения установлено в 1 for i := 1 to 4 do begin read(x); // Исправлено: добавлена проверка на абсолютное значение числа if (x >= 0) and (abs(x) <= 10) then begin p := p * x; count := count + 1; end; end; if count > 0 then begin writeln(count); // Исправлено: вывод количества неотрицательных чисел writeln(p); end else writeln('NO'); end.

В этом коде я внес исправления, чтобы учесть вышеуказанные проблемы.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос