Какие значения s, y будут выведены после выполнения следующей программы?
начало y:= 2;
нач_цикла для j от 0 до 5
s:= y + 2*j + j/2;
если s <= 15 то нач s:= s – 2*j; y:= y + 2 кон
иначе нач s:= s + y; y:= y – 1 кон;
кон_цикла;
вывод (” s=”, s, ” y=”, y);
конец
Аноним:
Необходимо уточнить, какой тип (целый, вещественный) имеют переменные y и s, поскольку для нечетных j операция j/2 возвращает нецелое значение.
Ответы
Ответ дал:
0
Ответ дал:
2
Трассировка для случая, когда s - вещественное
y= 2
************************
j= 0
s= 2
2 <= 15
s= 2 y= 4
j= 1
s= 6.5
6.5 <= 15
s= 4.5 y= 6
j= 2
s= 11
11 <= 15
s= 7 y= 8
j= 3
s= 15.5
23.5 > 15
s= 23.5 y= 7
j= 4
s= 17
24 > 15
s= 24 y= 6
j= 5
s= 18.5
24.5 > 15
s= 24.5 y= 5
************************
s= 24.5 y= 5
y= 2
************************
j= 0
s= 2
2 <= 15
s= 2 y= 4
j= 1
s= 6.5
6.5 <= 15
s= 4.5 y= 6
j= 2
s= 11
11 <= 15
s= 7 y= 8
j= 3
s= 15.5
23.5 > 15
s= 23.5 y= 7
j= 4
s= 17
24 > 15
s= 24 y= 6
j= 5
s= 18.5
24.5 > 15
s= 24.5 y= 5
************************
s= 24.5 y= 5
а когда s-целое?
А когда s-целое - будет зависеть от правил конкретного языка, на котором программируется данный алгоритм. Например, в Паскале (синтаксис программы в задании ближе всего к Паскалю) операция "/" всегда выполняется, как деление вещественных чисел, поэтому выражение y + 2*j + j/2 всегда вещественное и попытка присвоить значение вещественного выражения целочисленной переменной s вызовет ошибку еще на стадии компиляции программы.
А приведенная выше трассировка сделана в Бейсике (qBASIC), причем переменные не описывались и их типы система взяла по умолчанию. В Бейсике (как и в Паскале) операция / - всегда деление вещественных чисел, т.е. остаток не теряется.
Если в Бейсике указать, что s - целое, то при присваивании произойдет арифметическое округление вещественного значения до целого и результаты выполнения программы станут иными. Но, еще раз: по синтаксису приведенное задание ближе всего к Паскалю.
А вот в языке С++ при целочисленном j значение операции j/2 будет целым, потому что при делении целых дробная часть результата просто отбрасывается.
Вас заинтересует
2 года назад
2 года назад
7 лет назад
9 лет назад