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

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

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

 
 Ответить  Открыть новую тему 
> Окружности на Паскале
сообщение
Сообщение #1





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

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


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


Я.
****

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

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


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

как-то так
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





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

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


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





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

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


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


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8





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

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


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

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


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

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

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


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

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

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


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


Я.
****

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

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


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

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


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

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


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





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

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


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

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

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

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

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

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

 





- Текстовая версия 6.05.2024 0:57
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name