1. При вводе числа 15 программа выведет число 4.
2. Наименьшие значения A, при которых программа выведет верный ответ, равны 2 и 3.
3. В программе допущена типичная для начинающих программистов ошибка «смещения кадра»: значение переменной K, необходимое при первом выполнении цикла, присваивается до начала цикла, а значение для следующего оборота цикла вычисляется в конце предыдущего оборота. В результате, при завершении цикла K имеет значение больше, чем нужно. Вторая ошибка – неверный шаг изменения K. «Идеальная» программа решения этой задачи должна выглядеть так (приведён пример на языке Бейсик):
DIM A,S,K AS INTEGER
INPUT A
S = 0
K = −1
WHILE S <= A
K = K + 2
S = S + K*(K+1)
WEND
PRINT K
END
Но по условиям задания менять местами строки нельзя, их можно только исправлять. Поэтому, кроме исправления шага, приходится корректировать значение K при выводе. Пример исправления для языка Паскаль:
Первая ошибка:
k := k+1;
Исправленная строка:
k := k+2
Вторая ошибка:
writeln(k)
Исправленная строка:
writeln(k-2)
В программах на других языках ошибочные строки и их исправления аналогичны.
Незначительной опиской, не влияющей на оценку, следует считать отсутствие знаков и служебных слов после содержательной части исправления.
var n,m:integer;
rost,nine_a,nine_b:real;
begin
write('Введите количество учинеков 9а класса: ');
readln(n);
write('Введите количество учинеков 9б класса: ');
readln(m);
writeln('Вводите рост каждого из учинеков 9а по очереди');
for i:integer :=1 to n do begin
write(i,': ');
read(rost);
nine_a:=nine_a+rost;
end;
nine_a:=nine_a/n; // средний рост 9а
writeln('Вводите рост каждого из учинеков 9б по очереди');
for i:integer :=1 to m do begin
write(i,': ');
read(rost);
nine_b:=nine_b+rost;end;
nine_b:=nine_b/n; // средний рост 9б
if nine_a > nine_b then write('Средний рост учеников 9а больше.') else if nine_a < nine_b then write('Средний рост учеников 9б больше.') else write('Средний рост учеников 9а равен среднему росту учеников 9б.');
end.
как-то так, будут вопросы пиши)
Всего-то 30 мин