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

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

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

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





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

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


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


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

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


readln(n);
for i := 1 to n do
circle(random(300)+100,random(300)+100,random(100));

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





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

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


Спасибо!!А как теперь сделать так чтобы все окружности полностью распологались на экране?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Алиса Глупенькая
сообщение 1.06.2011 13:13
Сообщение #4





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

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


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


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
Сообщение #6





Группа: Пользователи
Сообщений: 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 
 К началу страницы 
+ Ответить 
IUnknown
сообщение 1.06.2011 14:38
Сообщение #7


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

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

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


Цитата
да еще они все теперь разного радиуса
Эти сказки будешь рассказывать кому-нибудь другому. В твоей программе они НИКАК не могут быть разного радиуса, у тебя R не изменяется. Это первое. Второе: у тебя что, действительно инициализируется режим 640*200, или ты так хитро решила показать КАК БЫ инициализацию 640*200? Зачем строка
Цитата
setviewport (0, 0, 637, 198, clipon);
? Просто так, ресурсы процессора поразбазаривать? Если режим и так инициализировался такой, как ты говоришь - то это сделается без тебя, не надо дублировать работу компилятора. Если же ты ПОКАЗЫВАЕШЬ, что у тебя "вот такой экран, и вот так располагаются окружности" - то будь добра и координаты окружностей генерировать не по реальному разрешению, а по мнимому, по тому, которое ты подразумеваешь. Обманывать можешь своего преподавателя, со мной это не проходит, я достаточно хорошо знаю язык, чтобы меня можно было на таких вещах ввести в заблуждение.

Зачем меняешь цвета окружностей? А если цвет случайно совпадет с цветом фона - ты окружность увидишь? Я - нет. И будешь считать, что программа отрабатывает неправильно, хотя она просто сделала то, что он нее просили. Хотя бы проверяй, если сгенерированный цвет совпадает с фоновым - то генерируй другой...

Вот это:
   initgraph (driver, mode, '' );

rectangle(0,0,637,198);
{setviewport (0, 0, 637, 198, clipon); }
randomize;
for i:=1 to n do
begin
x:= random(640 -2*r )+r;
y:= random(200 - 2*r )+r;
writeln(x:10, y:10);
circle(x, y, r);
end;
должно отрисовать N одинаковых окружностей белого цвета. Если этого не происходит - то выброси свой компилятор. А если происходит - то тогда уже добавляй изменение цвета, с учетом того что я написал выше.

Кстати, твоя программа вообще не откомпилируется, ибо раздел const - пустой. Как же ты говоришь, что программа работает? Опять одно из двух: либо врешь, что работает, либо показываешь ДРУГУЮ программу. Ни в том ни в другом случае у меня нет желания тебе помогать.

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





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

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


О боже! Сколько желчи! Я уже все разобрала сама, а не получалось потому что у меня сам паскаль иногда зависает чтоли или не знаю как это назвать но он прадолжает выполнять старую программу хотя написано уже другое.

Добавлено через 3 мин.
А setviewport (0, 0, 637, 198, clipon) я применяла потому что думала что это поможет мне чтобы окружности за экран не вылезали, но это оказалось другое. Я же за помощью обращаюсь следовательно я в этом не разбираюсь, и уж тем боллее обманывать тут кого то мне точно нет смысла.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 1.06.2011 16:02
Сообщение #9


Злостный любитель
*****

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

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


> О боже! Сколько желчи!

Где желчь? Если ты даже его (ну жестковат, но всё в пределах нормы) стиля разговора испугалась, то что же дальше будет. Хорошо, что ты ещё Луговского не видела...

Запомни - важна не форма, а содержание. Не бойся человека, если он хамит или грубит. Такие люди на самом деле наимеее опасны, потому что они прямо говорят, что думают, и всегда знаешь, чего от них ждать. А вот те, кто сладкими словами по ушам красиво умеют ездить - на самом деле как раз очень коварны и опасны, и от них хрен знаешь, чего ждать. Избегай таких людей.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
sheka
сообщение 1.06.2011 16:21
Сообщение #10


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

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


Цитата
Если же ты ПОКАЗЫВАЕШЬ, что у тебя "вот такой экран, и вот так располагаются окружности" - то будь добра и координаты окружностей генерировать не по реальному разрешению, а по мнимому, по тому, которое ты подразумеваешь

В данном случае по 637, 198 ?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
IUnknown
сообщение 1.06.2011 16:59
Сообщение #11


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

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

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


Цитата
В данном случае по 637, 198 ?
В данном случае - да.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Алиса Глупенькая
сообщение 2.06.2011 12:25
Сообщение #12





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

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


Цитата(TarasBer @ 1.06.2011 17:02) *

> О боже! Сколько желчи!

Где желчь? Если ты даже его (ну жестковат, но всё в пределах нормы) стиля разговора испугалась, то что же дальше будет. Хорошо, что ты ещё Луговского не видела...

Запомни - важна не форма, а содержание. Не бойся человека, если он хамит или грубит. Такие люди на самом деле наимеее опасны, потому что они прямо говорят, что думают, и всегда знаешь, чего от них ждать. А вот те, кто сладкими словами по ушам красиво умеют ездить - на самом деле как раз очень коварны и опасны, и от них хрен знаешь, чего ждать. Избегай таких людей.

Хорошо я учту, что это он на меня не ругался) Спасибо за помощь!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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