Автор | Сообщение |
|
Отправлено: 13.11.16 08:08. Заголовок: №11_ДЕМО_2017
В ответе к заданию №11 ДЕМО_2017 у меня получается 34. Не 33 как в ответе. Построила дерево и написала программу. 34. Вот программа: program Demo2017_N11; var s: integer; procedure F(n: integer); begin write( 'n=',n); s:=s+n; writeln( ' S=',S); if n > 2 then begin F(n -3); F(n -4); end end; begin F(10); writeln('Otvet:',s); end. Окно вывода: n=10 S=10 n=7 S=17 n=4 S=21 n=1 S=22 n=0 S=22 n=3 S=25 n=0 S=25 n=-1 S=24 n=6 S=30 n=3 S=33 n=0 S=33 n=-1 S=32 n=2 S=34 Otvet:34 Где я ошиблась?
|
|
|
Ответов - 8
[только новые]
|
|
|
| Администратор
|
Сообщение: 1200
|
|
Отправлено: 13.11.16 10:28. Заголовок: Гаврюкова пишет: Где..
Гаврюкова пишет: В оригинале writeln стоит внутри if.
|
|
|
|
Отправлено: 13.11.16 11:18. Заголовок: N11_ демо
Поставила внутрь. Числа получаются такие же как и при построения дерева. Опять 34! program Demo2017_N11; var s: integer; procedure F(n: integer); begin writeln( 'n=',n); s:=s+n; if n > 2 then begin F(n -3); F(n -4); writeln( ' S=',S); end end; begin F(10); writeln('Otvet:',s); end. n=10 n=7 n=4 n=1 n=0 S=22 n=3 n=0 n=-1 S=24 S=24 n=6 n=3 n=0 n=-1 S=32 n=2 S=34 S=34 Otvet:34 Такой же ответ получается и при решении подстановкой.
|
|
|
|
| Администратор
|
Сообщение: 1201
|
|
Отправлено: 13.11.16 11:56. Заголовок: Гаврюкова пишет: Так..
Гаврюкова пишет: цитата: | Такой же ответ получается и при решении подстановкой. |
|
Внутри if - это вот так: procedure F(n: integer); begin if n > 2 then begin writeln( 'n=',n); s:=s+n; F(n -3); F(n -4); writeln( ' S=',S); end end;
|
|
|
|
Отправлено: 13.11.16 12:58. Заголовок: Спасибо! Т.е., когда..
Спасибо! Т.е., когда строишь дерево из 10, - после 4 и 3 не смотреть! И на 2 тоже!
|
|
|
|
Отправлено: 13.11.16 13:11. Заголовок: ege_11 N82
Рассуждая по этому алгоритму (Ваши задания ege_11) в задаче N82 д.б. ответ 33. У меня получается 16 и деревом и в Паскале. n=5 n=4 n=3 n=2 S=14 S=14 S=14 n=2 S=16 S=16 Otvet:16 Где я опять заблудилась?
|
|
|
|
| Администратор
|
Сообщение: 1202
|
|
Отправлено: 13.11.16 13:33. Заголовок: Гаврюкова пишет: Где..
Гаврюкова пишет: Программу покажите.
|
|
|
|
Отправлено: 13.11.16 17:55. Заголовок: может так
Если там два раза writeln(n), то получается, что числа, которые будут выведены, для суммирования - повторяются 2 раза? program Z11_N82; var s, s1: integer; procedure F(n: integer); begin writeln('n=',n); s:=s+n; writeln( ' S=',S); if n > 1 then begin writeln( 'n_=',n); s1:=s1+n; F(n -1); F(n -3); writeln( ' S1=',S1); end end; begin F(5); writeln('Otvet:',s+s1); end. Otvet:33
|
|
|
|
| Администратор
|
Сообщение: 1204
|
|
Отправлено: 15.11.16 22:45. Заголовок: Да, можно и так. А м..
Да, можно и так. А можно было везде использовать s (убрать s1).
|
|
|
|