 
Программисту было поручено написать программу нахождения суммы отрицательных элементов
одномерного массива. Программист разработал программу, но допустил в ней одну ошибку. Текст программы с ошибкой представлен ниже: 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
         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
                     0
                    0
                 
            Давайте рассмотрим вашу программу по шагам и найдем ошибки в ней:
pascalprogram 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, 2, 3, 4, -1, -2, -3, -4, программа будет неправильно считать сумму отрицательных элементов. Ошибка заключается в том, что вместо - a[k]используется- a[1]при обновлении суммы. Поэтому программа будет добавлять значение- a[1]к сумме каждый раз, когда найдет отрицательный элемент. Ответ будет равен- -16, что неверно.
- Чтобы исправить программу и решить задачу корректно, вы должны использовать - a[k], чтобы добавить значение текущего отрицательного элемента к сумме. Вот исправленный код:
pascalprogram 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
                    1
                     0
                    0
                Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
- 
			Математика 
- 
			Литература 
- 
			Алгебра 
- 
			Русский язык 
- 
			Геометрия 
- 
			Английский язык 
- 
			Химия 
- 
			Физика 
- 
			Биология 
- 
			Другие предметы 
- 
			История 
- 
			Обществознание 
- 
			Окружающий мир 
- 
			География 
- 
			Українська мова 
- 
			Информатика 
- 
			Українська література 
- 
			Қазақ тiлi 
- 
			Экономика 
- 
			Музыка 
- 
			Право 
- 
			Беларуская мова 
- 
			Французский язык 
- 
			Немецкий язык 
- 
			МХК 
- 
			ОБЖ 
- 
			Психология 
- 
			Физкультура и спорт 
- 
			Астрономия 
- 
			Кыргыз тили 
- 
			Оʻzbek tili 
 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			