Помогите, пожалуйста, написать программу: пользователь вводит с клавиатуры число окружностей. Программа рисует данное число окружностей
sheka
1.06.2011 5:46
readln(n);
for i := 1to n do
circle(random(300)+100,random(300)+100,random(100));
как-то так
Алиса Глупенькая
1.06.2011 16:54
Спасибо!!А как теперь сделать так чтобы все окружности полностью распологались на экране?
Алиса Глупенькая
1.06.2011 17:13
задача: ввести с клавиатуры число окружностей и нарисовать их. А как сделать так чтобы все окружности полностью располагались на экране???
IUnknown
1.06.2011 17:14
Изменить "магические константы" в параметрах Random на функции, определяющие максимально возможные координаты для установленного у тебя граф. режима. То есть, если сделать так:
readln(n);
for i := 1to n dobegin
R := random(90) + 10;
circle(random(getmaxx - 2*R) + R, random(getmaxy - 2*R) + R, R);
end;
, то окружности в принципе не смогут вылезти за пределы экрана: если радиус окружности = R, то координата X должна лежать в диапазоне R .. (getmaxx - R), чтобы окружность не вылезла из границ экрана (бррр... ужас, представил себе окружность, которая торчит из монитора)... Аналогично и для Y-координаты.
В примере у Шеки также была небольшая вероятность того, что сгенерируется окружность с нулевым радиусом, ты ее не увидишь, и посчитаешь, что одна окружность вылезла за пределы экрана.
Изменить "магические константы" в параметрах Random на функции, определяющие максимально возможные координаты для установленного у тебя граф. режима. То есть, если сделать так:
readln(n);
for i := 1to n dobegin
R := random(90) + 10;
circle(random(getmaxx - 2*R) + R, random(getmaxy - 2*R) + R, R);
end;
, то окружности в принципе не смогут вылезти за пределы экрана: если радиус окружности = R, то координата X должна лежать в диапазоне R .. (getmaxx - R), чтобы окружность не вылезла из границ экрана (бррр... ужас, представил себе окружность, которая торчит из монитора)... Аналогично и для Y-координаты.
В примере у Шеки также была небольшая вероятность того, что сгенерируется окружность с нулевым радиусом, ты ее не увидишь, и посчитаешь, что одна окружность вылезла за пределы экрана.
нет что то все равно не работает. Вот полный текст задания: В текстовом режиме ввести число окружностей и их радиус. Перейти в графический режим работы с драйвером EGA, что соответствует константе 3, с режимом работы EGALo, что соответствует константе 0 (на экране при таком режиме 640Х200 точек), вывести окружности на экран, меняя цвет прорисовки каждой. Окружности должны полностью располагаться на экране. и вот что у меня написано Program x1; uses crt, graph; const
var driver, mode: integer; x, y: integer; r , k, i, n: integer; begin writeln ('VVeDITe r'); readln®; writeln ('vvedite n '); readln(n); begin driver:=3; mode:=0; initgraph (driver, mode, '' ); begin
randomize; for i:=1 to n do begin rectangle(0,0,637,198); setviewport (0, 0, 637, 198, clipon);
x:= random(getmaxx -2*r )+r; y:= random(getmaxy - 2*r )+r; setbkcolor(green); setcolor (succ(random(16))); circle(x, y, r); end; readln; end; end; end. В чем ошибка (он не все окружности на экран выводит)
Добавлено через 5 мин. да еще они все теперь разного радиуса
IUnknown
1.06.2011 18:38
Цитата
да еще они все теперь разного радиуса
Эти сказки будешь рассказывать кому-нибудь другому. В твоей программе они НИКАК не могут быть разного радиуса, у тебя R не изменяется. Это первое. Второе: у тебя что, действительно инициализируется режим 640*200, или ты так хитро решила показать КАК БЫ инициализацию 640*200? Зачем строка
Цитата
setviewport (0, 0, 637, 198, clipon);
? Просто так, ресурсы процессора поразбазаривать? Если режим и так инициализировался такой, как ты говоришь - то это сделается без тебя, не надо дублировать работу компилятора. Если же ты ПОКАЗЫВАЕШЬ, что у тебя "вот такой экран, и вот так располагаются окружности" - то будь добра и координаты окружностей генерировать не по реальному разрешению, а по мнимому, по тому, которое ты подразумеваешь. Обманывать можешь своего преподавателя, со мной это не проходит, я достаточно хорошо знаю язык, чтобы меня можно было на таких вещах ввести в заблуждение.
Зачем меняешь цвета окружностей? А если цвет случайно совпадет с цветом фона - ты окружность увидишь? Я - нет. И будешь считать, что программа отрабатывает неправильно, хотя она просто сделала то, что он нее просили. Хотя бы проверяй, если сгенерированный цвет совпадает с фоновым - то генерируй другой...
должно отрисовать N одинаковых окружностей белого цвета. Если этого не происходит - то выброси свой компилятор. А если происходит - то тогда уже добавляй изменение цвета, с учетом того что я написал выше.
Кстати, твоя программа вообще не откомпилируется, ибо раздел const - пустой. Как же ты говоришь, что программа работает? Опять одно из двух: либо врешь, что работает, либо показываешь ДРУГУЮ программу. Ни в том ни в другом случае у меня нет желания тебе помогать.
Алиса Глупенькая
1.06.2011 19:30
О боже! Сколько желчи! Я уже все разобрала сама, а не получалось потому что у меня сам паскаль иногда зависает чтоли или не знаю как это назвать но он прадолжает выполнять старую программу хотя написано уже другое.
Добавлено через 3 мин. А setviewport (0, 0, 637, 198, clipon) я применяла потому что думала что это поможет мне чтобы окружности за экран не вылезали, но это оказалось другое. Я же за помощью обращаюсь следовательно я в этом не разбираюсь, и уж тем боллее обманывать тут кого то мне точно нет смысла.
TarasBer
1.06.2011 20:02
> О боже! Сколько желчи!
Где желчь? Если ты даже его (ну жестковат, но всё в пределах нормы) стиля разговора испугалась, то что же дальше будет. Хорошо, что ты ещё Луговского не видела...
Запомни - важна не форма, а содержание. Не бойся человека, если он хамит или грубит. Такие люди на самом деле наимеее опасны, потому что они прямо говорят, что думают, и всегда знаешь, чего от них ждать. А вот те, кто сладкими словами по ушам красиво умеют ездить - на самом деле как раз очень коварны и опасны, и от них хрен знаешь, чего ждать. Избегай таких людей.
sheka
1.06.2011 20:21
Цитата
Если же ты ПОКАЗЫВАЕШЬ, что у тебя "вот такой экран, и вот так располагаются окружности" - то будь добра и координаты окружностей генерировать не по реальному разрешению, а по мнимому, по тому, которое ты подразумеваешь
В данном случае по 637, 198 ?
IUnknown
1.06.2011 20:59
Цитата
В данном случае по 637, 198 ?
В данном случае - да.
Алиса Глупенькая
2.06.2011 16:25
Цитата(TarasBer @ 1.06.2011 17:02)
> О боже! Сколько желчи!
Где желчь? Если ты даже его (ну жестковат, но всё в пределах нормы) стиля разговора испугалась, то что же дальше будет. Хорошо, что ты ещё Луговского не видела...
Запомни - важна не форма, а содержание. Не бойся человека, если он хамит или грубит. Такие люди на самом деле наимеее опасны, потому что они прямо говорят, что думают, и всегда знаешь, чего от них ждать. А вот те, кто сладкими словами по ушам красиво умеют ездить - на самом деле как раз очень коварны и опасны, и от них хрен знаешь, чего ждать. Избегай таких людей.
Хорошо я учту, что это он на меня не ругался) Спасибо за помощь!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.