Программисту было поручено написать программу нахождения суммы отрицательных элементов одномерного массива. Программист разработал
программу, но допустил в ней одну ошибку. Текст программы с ошибкой
представлен ниже:
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) Как исправить программу, чтобы она решала поставленную перед
программистом задачу?

АполинарияТВ АполинарияТВ    3   18.12.2020 22:34    628

Ответы
alimzhanbolathan alimzhanbolathan  17.01.2021 22:35

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];

Объяснение:

ПОКАЗАТЬ ОТВЕТЫ
натик2017 натик2017  18.01.2024 19:51
1) После исполнения этой программы при вводе чисел 1, 2, 3, 4, -1, -2, -3, -4 ответом будет 1.

Объяснение:
В данной программе определяется одномерный массив a, содержащий 8 элементов. Затем с помощью цикла for используется команда readln для ввода значений чисел в массив. Далее инициализируется переменная s, равная 0, которая будет использоваться для хранения суммы отрицательных элементов. Затем с помощью второго цикла for и условного оператора if проверяется каждый элемент массива a. Если элемент меньше нуля, то значение этого элемента прибавляется к переменной s. Однако здесь программа содержит ошибку: вместо прибавления текущего отрицательного элемента, прибавляется a[1] (первый элемент массива).

2) Для исправления программы, чтобы она решала поставленную задачу, нужно заменить a[1] на a[k] (текущий элемент массива) в цикле, который суммирует отрицательные элементы. Правильная версия программы выглядит следующим образом:

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];

writeln(s);
end.

Теперь программа будет работать правильно и вычислит сумму отрицательных элементов массива.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика