|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.12.2009, 11:28 | #1 |
Пользователь
Регистрация: 12.12.2009
Сообщений: 84
|
Паскаль графика
Нарисовать круг, касающийся границы экрана, разделенный на n равных секторов, каждый из которых закрашен случайным цветом; два соседних сектора не должны иметь одинаковый цвет; центр круга - точка (x,y);
Код:
|
27.12.2009, 22:40 | #2 |
Удален
Форумчанин
Регистрация: 02.12.2009
Сообщений: 309
|
это из-за погрешности при переходе от вещественных чисел к целым...
Код:
Последний раз редактировалось Alex_FF; 27.12.2009 в 22:42. |
27.12.2009, 22:42 | #3 |
Пользователь
Регистрация: 12.12.2009
Сообщений: 84
|
Спасибо но ошибка не пропала............всё равно погрешность остаётся......
ошибка накапливается из-за этих вычислений B := B + 360 div N; A + (360 div N) я хотел заменить их произведением но ничего не вышло Последний раз редактировалось Asira; 28.12.2009 в 21:35. |
27.12.2009, 23:01 | #4 |
Удален
Форумчанин
Регистрация: 02.12.2009
Сообщений: 309
|
а в чём собственно ошибка?
|
27.12.2009, 23:05 | #5 |
Пользователь
Регистрация: 12.12.2009
Сообщений: 84
|
когда нечётное число секторов то в конце накапливается маленький сектор которого не должно быть............
|
27.12.2009, 23:09 | #6 |
Удален
Форумчанин
Регистрация: 02.12.2009
Сообщений: 309
|
вот введите 11 и посмотрите... нету там никакого маленького сектора...
Это, конечно, в моем решении нету И чтобы поточнее было, замените B := B + 360 div N на B := B + Round(360 / N) и A := A + 360 div N на A := A + Round(360 / N) вот так будет Код:
|
27.12.2009, 23:18 | #7 |
Пользователь
Регистрация: 12.12.2009
Сообщений: 84
|
вот как раз так у меня сделано как у вас во втором варианте но сектор пустой остаётся точнее он не пустой он чёрный и не равный всем остальным........ только что в паскале запускал
погрешность в цикле всё равно остаётся........так как тут сумма.... Надо как то произведением заменить............а то получается что если n =7 то по циклу погрешность увеличивается в 7 раз ...я хотел сделать так чтобы он один сектор определял а так как остальные все равны то умножить на их количество , но я не знаю как при этом ещё учесть что сектора каждый раз должны быть разные по цвету Надо как то произведением заменить............а то получается что если n =7 то по циклу погрешность увеличивается в 7 раз ...я хотел сделать так чтобы он один сектор определял а так как остальные все равны то умножить на их количество , но я не знаю как при этом ещё учесть что сектора каждый раз должны быть разные по цвету Последний раз редактировалось Asira; 28.12.2009 в 21:36. |
27.12.2009, 23:31 | #8 |
Удален
Форумчанин
Регистрация: 02.12.2009
Сообщений: 309
|
сейчас, 5 сек., с другой задачей разберусь...
|
28.12.2009, 00:45 | #9 |
Удален
Форумчанин
Регистрация: 02.12.2009
Сообщений: 309
|
у черного цвета номер 0. Random(16) генерирует числа от 0 до 15. Когда выпадает 0, то тот сектор закрашивается черным... Напишите вместо Random(16) вот так: 1 + Random(15)
|
28.12.2009, 00:46 | #10 |
Пользователь
Регистрация: 12.12.2009
Сообщений: 84
|
ДАК ВЫПАДАЕТ СЕКТОР НЕ РАВНЫЙ ОСТАЛЬНЫМ СЕКТОРАМ........ОНИ ВСЕ ДОЛЖНЫ БЫТЬ МЕЖДУ СОБОЙ =
Последний раз редактировалось Asira; 28.12.2009 в 21:05. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Паскаль графика | Asira | Помощь студентам | 2 | 27.12.2009 22:34 |
паскаль. графика | deu4er | Помощь студентам | 2 | 18.05.2009 21:30 |
Паскаль графика | BuTeK1 | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 08.01.2009 11:01 |
ПАСКАЛЬ ГРАФИКА | glasian | Помощь студентам | 19 | 17.06.2008 04:26 |