IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Окружности на Паскале
Алиса Глупенькая
сообщение 1.06.2011 0:07
Сообщение #1





Группа: Пользователи
Сообщений: 8
Пол: Женский

Репутация: -  0  +


Помогите, пожалуйста, написать программу: пользователь вводит с клавиатуры число окружностей. Программа рисует данное число окружностей
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
IUnknown
сообщение 1.06.2011 13:14
Сообщение #2


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


Изменить "магические константы" в параметрах Random на функции, определяющие максимально возможные координаты для установленного у тебя граф. режима. То есть, если сделать так:

   readln(n);
for i := 1 to n do
begin
R := random(90) + 10;
circle(random(getmaxx - 2*R) + R, random(getmaxy - 2*R) + R, R);
end;
, то окружности в принципе не смогут вылезти за пределы экрана: если радиус окружности = R, то координата X должна лежать в диапазоне R .. (getmaxx - R), чтобы окружность не вылезла из границ экрана (бррр... ужас, представил себе окружность, которая торчит из монитора)... Аналогично и для Y-координаты.

В примере у Шеки также была небольшая вероятность того, что сгенерируется окружность с нулевым радиусом, ты ее не увидишь, и посчитаешь, что одна окружность вылезла за пределы экрана.

Сообщение отредактировано: IUnknown - 1.06.2011 13:14
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Алиса Глупенькая
сообщение 1.06.2011 13:56
Сообщение #3





Группа: Пользователи
Сообщений: 8
Пол: Женский

Репутация: -  0  +


Цитата(IUnknown @ 1.06.2011 14:14) *

Изменить "магические константы" в параметрах Random на функции, определяющие максимально возможные координаты для установленного у тебя граф. режима. То есть, если сделать так:

   readln(n);
for i := 1 to n do
begin
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 мин.
да еще они все теперь разного радиуса
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 14.07.2025 3:04
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"