Автор | Сообщение |
|
Отправлено: 08.10.22 00:39. Заголовок: Тема 6 Задача№52
Повтори 10 [Налево 60 Вперёд 300 Налево 60] Определите, сколько точек с целочисленными координатами будут находиться внутри области, ограниченной линией, заданной данным алгоритмом. Точки на линии следует учитывать. Программа выдает 38880, в ответе 38879. В чем ошибка? ## uses school; var k:integer; for var x:=-400 to 400 do for var y:=-400 to 400 do if (y<=tanDegrees(150)*x)and(x>=-(sqrt(sqr(300)-sqr(150))))and (y>=tanDegrees(30)*x)then k:=k+1; print(k)
|
|
|
Ответов - 11
[только новые]
|
|
|
Отправлено: 09.10.22 23:24. Заголовок: Перерешал. Ответ ток..
Перерешал. Ответ токой же 38880.
|
|
|
|
Отправлено: 09.10.22 23:38. Заголовок: Действительно ответ ..
Действительно ответ 38880. Видимо при решении не посчитал точку, которая лежит в 0, 0. Спасибо за вопрос. Написал Константину Юрьевичу, о том что нужно исправить ответ.
|
|
|
|
| Администратор
|
Сообщение: 3735
|
|
Отправлено: 10.10.22 19:02. Заголовок: Спасибо, ответ испра..
Спасибо, ответ исправлен.
|
|
|
|
Отправлено: 09.02.23 16:17. Заголовок: Задание 6
Повтори 12 [Направо 60 Вперёд 1 Направо 60 Вперёд 1 Направо 270] Определите, сколько точек с целочисленными координатами будут находиться внутри области, ограниченной линией, заданной данным алгоритмом. Точки на линии учитывать не следует. Код, рисующий фигуру: from turtle import * left(90) for i in range(12): right(60) forward(1*30) right(60) forward(1*30) right(270) penup() for x in range(8, -6,-1): for y in range(3, -10, -1): setpos(x*30, y*30) dot(4, 'red') Как подсчитать количество точек c помощью кода?
|
|
|
|
Отправлено: 10.02.23 10:26. Заголовок: Замятина пишет: Как..
Замятина пишет: цитата: | Как подсчитать количество точек c помощью кода? |
| если совсем просто, то можно так: from turtle import * left(90) for i in range(12): right(60) forward(1*30) right(60) forward(1*30) right(270) penup() k=0 for x in range(4, -3,-1): for y in range(0, -7, -1): setpos(x*30, y*30) dot(4, 'red') k+=1 print(k-11)
|
|
|
|
Отправлено: 10.02.23 12:10. Заголовок: Объясните, пожалуйст..
Объясните, пожалуйста, почему при выводе результата мы записываем print(k-11)
|
|
|
|
Отправлено: 10.02.23 13:53. Заголовок: Замятина пишет: поч..
Замятина пишет: цитата: | почему при выводе результата мы записываем print(k-11) |
| Тем самым мы исключаем те точки, которые лежат вне контура, к сожалению их все же нужно будет подсчитать! Если считать нет желания, можно поручить это программе, например такой: k=0 for x in range(-100, 100): for y in range(-100, 100): if (y < 3**0.5 / 3 * x + 31) and (y < -(3**0.5) / 3 * x + 62) and (y > -(3**0.5) / 3 * x) and (y > 3**0.5 / 3 * x - 31) and (x > 0) and (x < 31 * 3**0.5): k=k+1 print('Ответ:',k) Ответ: 2476 Правда для составления уравнения потребуется знать не только питон, но и алгебру и т.д...
|
|
|
|
Отправлено: 10.02.23 14:21. Заголовок: Должно получиться 38..
Должно получиться 38. Первый вариант выдавал правильный результат Спасибо, буду разбираться
|
|
|
|
Отправлено: 11.02.23 05:05. Заголовок: Замятина пишет: Дол..
Замятина пишет: Последний код я привел лишь в качестве иллюстрации того, каким будет решение для шестиугольника, полученного по алгоритму: Повтори 21 [Вперёд 31 Направо 60] Представляете, сколь длинным будет условие, если попытаться решить таким образом многоугольник, предложенный вами! Замятина пишет: цитата: | Спасибо, буду разбираться |
| Удачи!
|
|
|
|
Отправлено: 13.02.23 09:19. Заголовок: Спасибо большое. Раз..
Спасибо большое. Разобралась. Все получилось!
|
|
|
|
Отправлено: 14.02.23 05:46. Заголовок: Замятина пишет: Ра..
Замятина пишет: цитата: | Разобралась. Все получилось! |
| А я и не сомневался что у вас получиться!
|
|
|
|