var a, s, k: integer; begin
read(a);
s := 0; k := 1;
while s <= a do begin
s := s+k*(k+1);
k := k+1;
end;
writeln(k)
end.
Выполните следующее.
Напишите, что выведет эта программа при вводе числа 15.
Укажите два наименьших значения A, при которых программа выведет верный ответ.
3. Найдите в программе все ошибки (их может быть одна или несколько). Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
1.При вводе числа 15 программа выведет число 4.
2. Наименьшие значения A, при которых верный ответ, равны 2 и 3.
В программе ошибка «смещения кадра»: значение переменной K, необходимое при первом выполнении цикла, присваивается до начала цикла, а значение для следующего оборота цикла вычисляется в конце предыдущего оборота. В результате, при завершении цикла K имеет значение больше, чем нужно. Вторая ошибка – неверный шаг изменения K.
Первая ошибка: k := k+1; Исправленная строка: k := k+2
Вторая ошибка: writeln(k) Исправленная строка: writeln(k-2)
var a, s, k: integer; begin
read(a);
s := 0; k := 1;
while s <= a do begin
k := k+1;
s := s+k*(k+1);
end;
writeln(k)
end.
Выполните следующее.
Напишите, что выведет эта программа при вводе числа 15.
Укажите два наименьших значения A, при которых программа выведет верный ответ.
Найдите в программе все ошибки (их может быть одна или несколько). Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
ОТВЕТ
При вводе числа 15 программа выведет число 3.
Наименьшие значения A, при которых программа выведет верный ответ, равны 6 и 7.
Программа содержит две ошибки: неверная инициализация и неверный шаг изменения K. При инициализации значения переменных S и K не соответствуют друг другу. Чтобы устранить это несоответствие, можно исправить любое из двух начальных присваиваний. Таким образом, первую ошибку можно исправить двумя способами.
Первая ошибка, способ 1: s := 0; Исправленная строка: s := 2;
Первая ошибка, способ 2: k := 1; Исправленная строка: k := -1;
Вторая ошибка: k := k+1; Исправленная строка: k := k+2;
const N=2017;
var a: array [1..N] of integer;
i, m, k: integer;
begin
for i:=1 to N do
readln(a[i]);
…
end.
В системе счисления с основанием p ровно два знака содержат числа в интервале от p до (p2 -1). При p = 16 получаем интервал от 16 до 255. При этом последняя цифра записи числа равна остатку от деления этого числа на p. Для решения задачи необходимо просмотреть все числа в массиве и подсчитать количество тех, которые удовлетворяют заданным ограничениям
m:=0;
for i:=1 to N do
Begin
if (16<=a[i]) and (a[i]<=255) and (a[i] mod 16 >= 10) then m := m+1; end;
writeln(m)
const N=2017;
var a: array [1..N] of integer;
i, m, k: integer;
begin
for i:=1 to N do
readln(a[i]);
…
end.
В системе счисления с основанием p ровно три знака содержат числа в интервале от p2 до p3 -1. При p=16 получаем интервал от 256 до 4095. При этом последняя цифра записи числа равна остатку от деления этого числа на основание системы счисления. Для решения задачи необходимо просмотреть все числа в массиве и подсчитать сумму тех, которые удовлетворяют заданным ограничениям.
m:=0;
for i:=1 to N do
begin
if (256<=a[i]) and (a[i]<=4095) and (a[i] mod 16 >= 10) then m:= m+a[i];
end;
writeln(m)
Выполните следующие задания.
а) При каких значениях числа S Паша может выиграть в один ход? Укажите все такие значения и соответствующие ходы Паши.
б) У кого из игроков есть выигрышная стратегия при S = 31, 32, 33, 34? Опишите выигрышные стратегии для этих случаев.
У кого из игроков есть выигрышная стратегия при S = 11? Опишите соответствующие выигрышные стратегии.
У кого из игроков есть выигрышная стратегия при S = 10? Постройте дерево всех партий, возможных при этой выигрышной стратегии (в виде рисунка или таблицы). На рёбрах дерева указывайте, кто делает ход, в узлах – количество камней в позиции.
Выполните следующие задания.
а) При каких значениях числа S Паша может выиграть в один ход? Укажите все такие значения и соответствующие ходы Паши.
б) У кого из игроков есть выигрышная стратегия при S = 31, 32, 33, 34? Опишите выигрышные стратегии для этих случаев.
Выполните следующие задания.
У кого из игроков есть выигрышная стратегия при S = 11? Опишите соответствующие выигрышные стратегии.
При S = 10 выигрышная стратегия есть у Паши. Своим первым ходом Паша может добавить в кучу один камень и получить кучу, в которой 11 камней. В этой позиции выигрышная стратегия есть у игрока, который не должен ходить (см. п.2), то есть у Паши.
Выполните следующие задания.
3. а) У кого из игроков есть выигрышная стратегия при S = 10? Постройте дерево всех партий, возможных при этой выигрышной стратегии (в виде рисунка или таблицы). На рёбрах дерева указывайте, кто делает ход, в узлах – количество камней в позиции.
В таблице изображено дерево возможных партий при описанной стратегии Паши. Заключительные позиции (в них выигрывает Паша) подчёркнуты
Выполните следующие задания.
3. а) У кого из игроков есть выигрышная стратегия при S = 10? Постройте дерево всех партий, возможных при этой выигрышной стратегии (в виде рисунка или таблицы). На рёбрах дерева указывайте, кто делает ход, в узлах – количество камней в позиции.
Это сайт презентаций, где можно хранить и обмениваться своими презентациями, докладами, проектами, шаблонами в формате PowerPoint с другими пользователями. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами.
Email: Нажмите что бы посмотреть