Предмет: Информатика, автор: yagovitina1981

Помогите
Что делает следующая программа? Какой ответ она выдаст при введении чисел 3 и 24?
var a,b,s,k:integer;
begin
readln(a);
readln(b);
S:=a;
while s k:=k+1;
s:=s+a; end;
writeln(k);
end.


Аноним: что написано после while s ?
yagovitina1981: var a,b,s,k:integer;
begin
readln(a);
readln(b);
S:=a;
while s k:=k+1;
s:=s+a; end;
writeln(k);
end.
Аноним: после S должно быть условие, типо S> 0 или еще что-то
yagovitina1981: while s

Ответы

Автор ответа: slonva2021
1

Ответ:

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)

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

Незначительной опиской, не влияющей на оценку, следует считать отсутствие знаков и служебных слов после содержательной части исправления.

Интересные вопросы
Предмет: Алгебра, автор: ireneya
Предмет: География, автор: Смачных