Вопрос задан 28.06.2023 в 22:43. Предмет Информатика. Спрашивает Азербиева Амира.

Программисту было поручено написать программу нахождения суммы отрицательных элементов

одномерного массива. Программист разработал программу, но допустил в ней одну ошибку. Текст программы с ошибкой представлен ниже: program n1; var k, s: integer; a: array [1..8] of integer; begin for k := 1 to 8 do readln(a[k]); s := 0; for k := 1 to 8 do if a[k] < 0 then s := s + a[1]; writeln(s); end. 1) Каким окажется ответ после исполнения этой программы, если в качестве элементов массива будут введены числа 1, 2, 3, 4, -1, -2, -3, -4? 2) Как исправить программу, чтобы она решала поставленную перед программистом задачу?
0 0
Перейти к ответам

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

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

Ответ:

1.

program n1;

var

k, s: integer;

a: array [1..8] of integer;

begin

for k := 1 to 8 do readln(a[k]);  // с клавиатуры вводится массив из 8

s := 0;                                           элементов

for k := 1 to 8 do

if a[k] < 0 then s := s + a[1];  // в цикле 4 раза к s прибавляют 1-ый элемент

writeln(s);                             // выводится s

end.

Ответ: 4(т.к 1-ый элемент массива 1 и в нём 4 отрицательных элемента)

2.  

Надо строку if a[k] < 0 then s := s + a[1];

Заменить на строку if a[k] < 0 then s := s + a[k];

Объяснение:

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

Давайте рассмотрим вашу программу по шагам и найдем ошибки в ней:

pascal
program n1; var k, s: integer; a: array [1..8] of integer; begin for k := 1 to 8 do readln(a[k]); s := 0; for k := 1 to 8 do if a[k] < 0 then s := s + a[1]; // Ошибка здесь, должно быть s := s + a[k] writeln(s); end.
  1. После исполнения этой программы с введенными числами 1, 2, 3, 4, -1, -2, -3, -4, программа будет неправильно считать сумму отрицательных элементов. Ошибка заключается в том, что вместо a[k] используется a[1] при обновлении суммы. Поэтому программа будет добавлять значение a[1] к сумме каждый раз, когда найдет отрицательный элемент. Ответ будет равен -16, что неверно.

  2. Чтобы исправить программу и решить задачу корректно, вы должны использовать a[k], чтобы добавить значение текущего отрицательного элемента к сумме. Вот исправленный код:

pascal
program n1; var k, s: integer; a: array [1..8] of integer; begin for k := 1 to 8 do readln(a[k]); s := 0; for k := 1 to 8 do if a[k] < 0 then s := s + a[k]; // Исправление: использовать a[k] вместо a[1] writeln(s); end.

Теперь программа должна правильно считать сумму отрицательных элементов массива и выведет -10 в случае ввода чисел 1, 2, 3, 4, -1, -2, -3, -4.

1 0

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

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

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

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