|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.03.2008, 10:43 | #1 |
Пользователь
Регистрация: 02.03.2008
Сообщений: 20
|
Помогите найти ошибку в программе
Условие: Дано число 0<R<1. Построить последовательность N окружностей так, чтобы: 1) Диаметр первой расположенной по центру экрана окружности составлял R от вертикальной длины экрана. 2) Диаметр каждой последующей окружности составлял 0<W<1 от диаметра предыдущей окружности. 3) Каждая последующая окружность должна внутренне касаться предыдущей окружности в случайной точке и иметь случайный цвет.
Программу написал, но есть глюк, который я не могу вычислить, помогите. При r=0.9, w=0.9, n=30 происходит смещение окружности. Помогите исправить ошибку!!! Привожу код программы: program mnogograf; uses crt,graph; var grDriver:integer; grMode:integer; ErrCode:integer; radius,centrX,centrY,x0,y0,n,i,k:in teger; r,w:real; Begin clrscr; randomize; write ('Enter 0<r<1 : '); readln (r); if (r<0) or (r>1) then begin writeln ('Invalid value, press eny key'); readkey; exit; end; write ('Enter 0<w<1 : '); readln (w); if (w<0) or (w>1) then begin writeln ('Invalid value, press eny key'); readkey; exit; end; write ('Enter n>1 : '); readln (n); if (n<1) then begin writeln ('Invalid value, press eny key'); readkey; exit; end; begin grDriver := Detect; InitGraph(grDriver, grMode,''); ErrCode := GraphResult; if ErrCode = grOk then begin { Do graphics } setcolor(random(15)); centrX:=getmaxx div 2; centrY:=getmaxy div 2; radius:=round((r*getmaxy)/2); circle(centrX,centrY,radius); for i:=1 to n-1 do begin readln; setcolor(random(15)); k:=random(360); x0:=centrX+(round((radius)*sin(k))-round((radius*w)*sin(k))); y0:=centrY+(round((radius)*cos(k))-round((radius*w)*cos(k))); circle(x0,y0,round(radius*w)); radius:=round(radius*w); centrX:=x0; centrY:=y0; end; Readln; CloseGraph; end else Writeln('Graphics error:', GraphErrorMsg(ErrCode)); end; End. Последний раз редактировалось KnDmPetr; 10.03.2008 в 10:59. |
10.03.2008, 11:12 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
а у меня вроде всё нормально... что смещается?
ну, есть одно подозрение, попробуйте вместо Readln; написать код: Код:
кстати не забывайте, пожалуйста, при публикации кода на форуме использовать обрамляющие тэги (CODE /CODE) |
10.03.2008, 12:16 | #3 |
Пользователь
Регистрация: 02.03.2008
Сообщений: 20
|
Рисуются окружности одна в другой, но иногда окружности (когда радиус уже не очень большой) вдруг начинают постепенно смещаться вниз за рамки экрана минуя все формулы по которым они строятся.
|
10.03.2008, 13:06 | #4 |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
При том коде, который приведен изначально, действительно на 26-м пункте начинаются смещения. Просто заменил в строчке
readln; setcolor(random(15)); readln; на readkey и все нормально заработало, почему не знаю. Кстати если и readln; и readkey убрать, то программа все сразу сама выдает. Последний раз редактировалось puporev; 10.03.2008 в 13:15. |
10.03.2008, 14:12 | #5 |
Пользователь
Регистрация: 02.03.2008
Сообщений: 20
|
То что если и readln; и readkey убрать, то программа все сразу сама выдает это я знаю, я специально их поставил чтобы посмотреть как все получается в режиме отладки
|
10.03.2008, 14:19 | #6 |
Пользователь
Регистрация: 02.03.2008
Сообщений: 20
|
Все заработало, спасибо за советы. Действительно, если заменить readln на readkey все нормально работает. Хотя почему не хочет с readln нормально работать до сих пор непонятно. Всем спасибо за помощь!!!
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
помогите найти ошибку | Максим_Леонидович | БД в Delphi | 4 | 20.08.2008 23:23 |
Помогите найти ошибку | Dmitriy | Общие вопросы Delphi | 4 | 01.08.2008 23:32 |
Помогите найти ошибку в программе | Evgenii | Помощь студентам | 3 | 24.07.2008 09:06 |
Помогите найти ошибку | NeiL | Общие вопросы Delphi | 7 | 04.03.2008 07:14 |
help!!! Помогите найти ошибку!!! | linker13 | Общие вопросы Delphi | 2 | 07.07.2007 23:15 |