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

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

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

> Программа, проверяющая поподает ли точка M(x,y) в заданную область
Kosmik
сообщение 27.11.2009 18:22
Сообщение #1


...
*

Группа: Пользователи
Сообщений: 31
Пол: Женский
Реальное имя: Надежда

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


Написать программу, проверяющую, попадает ли точка M(x,y) с координатами x и y в заданную область. Нарисовать заданный рисунок в графическом режиме и закрасить ту область, в которую попала точка.
Написать программу, которая по заданной области автоматически составляет Паскаль-программу, проверяющую, попадает ли точка M(x,y) с координатами x и y в эту область.

Прикрепленное изображение

Для решения задачи организуйте арифметический цикл с заранее известным числом повторений.

Напишите, какие появились идеи на счет решения этой задачи...

График я сейчас попытаюсь сделать...в остальном возникли затруднения.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Archon
сообщение 27.11.2009 22:29
Сообщение #2


Профи
****

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

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


У тебя же два задания, верно? Как я понимаю, изображение относится к первому. Условие для него такое (я потестировал, но ты лучше сама проверь, мало ли):
(y <= 0) and (x <= 0) and ((sqr(x+2) + sqr(y) <= 4) xor ((y < (x+2)*2/3) and (y > (x+3.6641)*(-0.2837)-1.1094)))
Нарисовать картинку на экране, думаю, дело техники.

А вот со вторым заданием непонятно. Судя по всему на вход программе должна поступать некоторым образом заданная область, а на выходе она должна выдавать программу на Паскале. Вот я и спрашиваю, в каком виде должна задаваться эта область. Ну не рисунок же программа разбирать должна. Кстати, вот это:
Цитата
Для решения задачи организуйте арифметический цикл с заранее известным числом повторений.
к какой задаче относится?


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Kosmik
сообщение 27.11.2009 23:27
Сообщение #3


...
*

Группа: Пользователи
Сообщений: 31
Пол: Женский
Реальное имя: Надежда

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


График я нарисовала...какой уж получился...простой такой правда...

program graphik;
uses crt,graph;

var gd,gm:integer;
fun:string;

procedure osicoordinat;
const step=25;
var x1,y1,r:integer;
s:string;
begin
line(210,240,440,240);
line(320,140,320,330);
line(430,235,440,240);
line(430,245,440,240);
line(315,150,320,140);
line(325,150,320,140);
outtextxy(330,140,'Y');
outtextxy(435,220,'X');
y1:=240; x1:=320; r:=0;
str(r div step, S);
outtextxy(x1-10,y1+6,S);
while x1+r<420 do
begin
r:=r+step;
str(r div step, S);
settextjustify (1,1);
outtextxy(x1+r,y1+10,S);
s:='-'+S;
outtextxy(x1-r,y1+10,S);
line(x1+r,y1-2,x1+r,y1+2);
line(x1-r,y1-2,x1-r,y1+2);
end;
r:=0;
while y1+r<315 do
begin
r:=r+step;
str(r div step, S);
settextjustify (1,1);
outtextxy(x1-10,y1-r,S);
s:='-'+S;
outtextxy(x1-10,y1+r,S);
line(x1+4,y1+r,x1-4,y1+r);
line(x1+4,y1-r,x1-4,y1-r);
end;
end;
begin
initgraph(gd,gm,'..\bgi');
osicoordinat;
circle (270,240,50);
line(370,165,395,315);
line(395,315,230,270);
line(230,270,370,165);
SetFillStyle(LtSlashFill,15);
FloodFill(235,250,15);
FloodFill(260,285,15);
FloodFill(315,270,15);
readln
end.



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


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Kosmik @ 27.11.2009 23:27) *
я не знаю, правильно ли я его написала...или по другому нужно было сделать...
ммммммммне кажется, что нужно было по-другому..
Во-первых, отвыкай (лучше, еще не привыкнув) использовать абсолютные координаты на экране. Исключительный моветон. Правильно было бы задать соответствие математических координат (типа слева x1=-5, справа x2=5 и т.д.) и сделать функцию, которая переводит математические координаты в физические на эеране. Типа так:
function xPh(x: tReal): integer;
begin
xPh=Round(x/(x2-x1)*GetMaxX)
end;

function yPh(y: tReal): integer;
begin
yPh=Round((1-y/(y2-y1))*GetMaxY)
end;


Во-вторых, тебе надо было закрасить область, куда попала точка (предварительно, видимо, запросив ее ввход). Куда ПОПАЛА, а не заданная область. Чувствуешь разницу? smile.gif

А в третьих, задание не очень ясное. Я имею в виду второе.. Как там задается область? ее что, сканировать нужно?? smile.gif Я бы, может, придумал некий язык для задания и читал бы из файла тогда. В файле что-то типа такого:

Код
area

circle
-2
0
2
inner

line
0
1.5
-2
0
right

line
0
0
-2
0
left

area
....

че скажешь? smile.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Kosmik
сообщение 28.11.2009 11:45
Сообщение #5


...
*

Группа: Пользователи
Сообщений: 31
Пол: Женский
Реальное имя: Надежда

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


Цитата(Lapp @ 28.11.2009 13:11) *

че скажешь? smile.gif

Скажу что для меня пока все это сложно blush.gif а на счет задания абсолютных координат я подумаю smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Kosmik
сообщение 28.11.2009 16:40
Сообщение #6


...
*

Группа: Пользователи
Сообщений: 31
Пол: Женский
Реальное имя: Надежда

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


Что-то у меня вообще ничего не получается ypriamii.gif если такие задачи нам дают на первом курсе sad.gif то что будет дальше?..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 28.11.2009 16:52
Сообщение #7


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Kosmik @ 28.11.2009 16:40) *
Что-то у меня вообще ничего не получается ypriamii.gif если такие задачи нам дают на первом курсе sad.gif то что будет дальше?..
Надя, ты чего?.. Так хорошо начинала, все сама делала.. Я смотрел - не мог нарадоваться (пошерсти-ка по форуму, посмотри, как другие поступают..).

Что именно у тебя не выходит? Ты говори, разберемся вместе. Обязательно разберемся.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Kosmik
сообщение 28.11.2009 18:11
Сообщение #8


...
*

Группа: Пользователи
Сообщений: 31
Пол: Женский
Реальное имя: Надежда

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


Цитата(Lapp @ 28.11.2009 18:52) *

Что именно у тебя не выходит?


Я не могу построить график по координатам...вообще никак не получается...пробовала в той же программе прописать ту процедуру, которую Вы посоветовали..но как у новичка в прогроммировании..стали выходить ошибки...одну исправлю выходит другая...я уже запуталась..не могу понять что мне сейчас делать. Все что нарисовала переделывать или искать решение у второй задачи. Путаница в голове полнейшая blush.gif

Если бы я смогла как-то начертить график окружности и нарисовать треугольник по его вершинам...там наверное уже можно бы было думать на счет второй задачи. Щас буду думать как это все воплотить...может что-то и получится...надеюсь. smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 28.11.2009 18:55
Сообщение #9


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Kosmik @ 28.11.2009 18:11) *
стали выходить ошибки...одну исправлю выходит другая...я уже запуталась..не могу понять что мне сейчас делать. Все что нарисовала переделывать или искать решение у второй задачи.
Очень часто приходится переделывать всю программу, с начала до конца. Как ьы хорошо ни старался продумать заранее, все учесть невозможно. Тому, кто боится переделать все с нуля, в программировании делать нечего )). Обычно желание все переписать появляется и потом накапливается. В некоторый момент понимаешь, что все - по-старому уже нельзя. И процесс переделки далеко не всегда радужный..

Цитата
Если бы я смогла как-то начертить график окружности и нарисовать треугольник по его вершинам...там наверное уже можно бы было думать на счет второй задачи.
Боюсь, я не совсем тебя понял. Что означает "начертить график окружности"? У тебя же есть процедура Circle. Просто нужно подставить туда математические координаты. Сложность возникает в случаеЬ когда масштаб по осям не совпадает. И тогда ясно, что на самом деле нужно использовать не Circle, а Ellipse с соответствующим пересчетом осей. Сможешь сама сделать или помочь?

А треугольник по вершинам - просто с помощью MathLine .. Я что-то упускаю?

ты только не паникуй )). без трудностей не бывает. да и неинтересно.. ))


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Kosmik
сообщение 28.11.2009 19:15
Сообщение #10


...
*

Группа: Пользователи
Сообщений: 31
Пол: Женский
Реальное имя: Надежда

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


Цитата(Lapp @ 28.11.2009 20:55) *

Очень часто приходится переделывать всю программу, с начала до конца. Как ьы хорошо ни старался продумать заранее, все учесть невозможно. Тому, кто боится переделать все с нуля, в программировании делать нечего )). Обычно желание все переписать появляется и потом накапливается. В некоторый момент понимаешь, что все - по-старому уже нельзя. И процесс переделки далеко не всегда радужный..

Переделать на боюсь, боюсь что не смогу доделать. Если честно, не люблю оставлять не закоченные дела. ночь просижу, но задачку сделаю.

Цитата(Lapp @ 28.11.2009 20:55) *

Боюсь, я не совсем тебя понял. Что означает "начертить график окружности"? У тебя же есть процедура Circle. Просто нужно подставить туда математические координаты. Сложность возникает в случаеЬ когда масштаб по осям не совпадает. И тогда ясно, что на самом деле нужно использовать не Circle, а Ellipse с соответствующим пересчетом осей. Сможешь сама сделать или помочь?


Помогите, если вам будет это не трудно blush.gif

Цитата(Lapp @ 28.11.2009 20:55) *

А треугольник по вершинам - просто с помощью MathLine .. Я что-то упускаю?

Пыталась это сделать, но на этой строчке Line(xPh(x1),yPh(y1),xPh(x2),yPh(y2)) все время выходила какая-то ошибка(только уже не помню какая, слишком их много сегодня было smile.gif).

Добавлено через 17 мин.
окружность нарисовала:) щас процедуру MathLine попытаюсь прописать...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 28.11.2009 19:58
Сообщение #11


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Kosmik @ 28.11.2009 19:15) *
Помогите, если вам будет это не трудно

Во-первых, я там ошибся выше в переводе координат sad.gif - извиняюсь..
Во-вторых, ниже я переделал все названия (это я люблю)).
В третьих, вот:
uses
Graph;

var
MaX1,MaY1,MaX2,MaY2: double;


function PhX(x: double): integer;
begin
PhX:=Round((x-MaX1)/(MaX2-MaX1)*GetMaxX)
end;


function PhY(y: double): integer;
begin
PhY:=Round((1-(y-MaY1)/(MaY2-MaY1))*GetMaxY)
end;


procedure MaLine(x1,y1,x2,y2: double);
begin
Line(PhX(x1),PhY(y1),PhX(x2),PhY(y2))
end;


procedure MaCircle(x1,y1,r: double);
begin
Circle(PhX(x1),PhY(y1),PhX(MaX1+r))
end;


procedure MaTriangle(x1,y1,x2,y2,x3,y3: double);
begin
Line(PhX(x1),PhY(y1),PhX(x2),PhY(y2));
Line(PhX(x2),PhY(y2),PhX(x3),PhY(y3));
Line(PhX(x3),PhY(y3),PhX(x1),PhY(y1))
end;


var
gd,gm: integer;


begin
gd:=0;
InitGraph(gd,gm,'');

// расставим мат. границы
MaX1:=-6;
MaX2:=6;
MaY2:=(MaX2-MaX1)/GetMaxX*GetMaxY/2;
MaY1:=-MaY2;

// рисуем оси
MaLine(-5.5,0,5.5,0);
MaLine(0,-3.5,0,3.5);

MaTriangle(-3.7, -1.2, 3, 2, 3, -3);
MaCircle(-2, 0, 2);
ReadLn
end.

С эллипсом немного потом, ладно? Когда посплю чуток)).
И зарубки на осях сделаем)).


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Kosmik
сообщение 28.11.2009 20:24
Сообщение #12


...
*

Группа: Пользователи
Сообщений: 31
Пол: Женский
Реальное имя: Надежда

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


А может попробуем мою переделать? blush.gif окружность уже рисует по координатам smile.gif только вот с треугольником возникли проблемки..программа вот в этих строчках указывает на ошибку...скорее всего из-за этих чисел 3.6 может знаете в чем ошибка?
line(x1+3*st,y1+3*st,x1-(3.6*st),y1+1.2*st);
line(x1-3.6*st,y1+1.2*st,x1+2*st,y1-3*st);


program graphik;
uses crt,graph;
const st=25;
var gd,gm:integer;
x2,x1,y2,y1,r:integer;
fun:string;

function xPh(x: Real): integer;
begin
xPh:=Round(x/(x2-x1)*GetMaxX)
end;

function yPh(y: Real): integer;
begin
yPh:=Round((1-y/(y2-y1))*GetMaxY)
end;

procedure osicoordinat;
const step=25;
var x1,y1,r:integer;
s:string;
begin
line(210,240,440,240);
line(320,140,320,330);
line(430,235,440,240);
line(430,245,440,240);
line(315,150,320,140);
line(325,150,320,140);
outtextxy(330,140,'Y');
outtextxy(435,220,'X');
y1:=240; x1:=320; r:=0;
str(r div step, S);
outtextxy(x1-10,y1+6,S);
while x1+r<420 do
begin
r:=r+step;
str(r div step, S);
settextjustify (1,1);
outtextxy(x1+r,y1+10,S);
s:='-'+S;
outtextxy(x1-r,y1+10,S);
line(x1+r,y1-2,x1+r,y1+2);
line(x1-r,y1-2,x1-r,y1+2);
end;
r:=0;
while y1+r<315 do
begin
r:=r+step;
str(r div step, S);
settextjustify (1,1);
outtextxy(x1-10,y1-r,S);
s:='-'+S;
outtextxy(x1-10,y1+r,S);
line(x1+4,y1+r,x1-4,y1+r);
line(x1+4,y1-r,x1-4,y1-r);
end;
end;

begin
initgraph(gd,gm,'..\pp');
osicoordinat;

y1:=240; x1:=320; r:=2*st;
circle (x1-2*st,y1,r);
line(x1+2*st,y1-3*st,x1+3*st,y1+3*st);
line(x1+3*st,y1+3*st,x1-(3.6*st),y1+1.2*st);
line(x1-3.6*st,y1+1.2*st,x1+2*st,y1-3*st);
SetFillStyle(LtSlashFill,15);
FloodFill(235,250,15);
FloodFill(260,285,15);
FloodFill(315,270,15);
readln
end.




Добавлено через 10 мин.

Ошибку решила так
line(x1+3*st,y1+3*st,x1-trunc(3.6*st),y1+trunc(1.2*st));
line(x1-trunc(3.6*st),y1+trunc(1.2*st),x1+2*st,y1-3*st);
теперь все работает blush.gif

Теперь осталась вторая часть задания smile.gif да?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Kosmik   Программа, проверяющая поподает ли точка M(x,y) в заданную область   27.11.2009 18:22
Archon   А в каком виде задается область?   27.11.2009 19:35
Kosmik   А в каком виде задается область? В заштрихованн...   27.11.2009 20:58
Archon   У тебя же два задания, верно? Как я понимаю, изобр...   27.11.2009 22:29
Kosmik   График я нарисовала...какой уж получился...простой...   27.11.2009 23:27
Lapp   я не знаю, правильно ли я его написала...или по др...   28.11.2009 11:11
Kosmik   че скажешь? :) Скажу что для меня пока все это с...   28.11.2009 11:45
Lapp   Скажу что для меня пока все это сложноНе так страш...   28.11.2009 12:31
Kosmik   Что-то у меня вообще ничего не получается :ypriami...   28.11.2009 16:40
Lapp   Что-то у меня вообще ничего не получается :ypriami...   28.11.2009 16:52
Kosmik   Что именно у тебя не выходит? Я не могу построи...   28.11.2009 18:11
Lapp   стали выходить ошибки...одну исправлю выходит друг...   28.11.2009 18:55
Kosmik   Очень часто приходится переделывать всю программу...   28.11.2009 19:15
Lapp   Помогите, если вам будет это не трудно Во-первых,...   28.11.2009 19:58
Kosmik   А может попробуем мою переделать? :blush: окружнос...   28.11.2009 20:24
Kosmik   вот моя программка все координаты абсолютные :) п...   28.11.2009 21:10
Kosmik   Оставляю здесь мой "шедевр" Сделала все...   29.11.2009 1:27
Lapp   Сделала все что смогла...Уверена? :) Я так и не по...   29.11.2009 8:32
Kosmik   Я так и не понял, что тебе не было понятно в мое...   29.11.2009 10:15
Archon   Рисует красиво :)   27.11.2009 23:35
Kosmik   Рисует красиво :) Спасибо :blush:   27.11.2009 23:37
Kosmik   У меня тут возникла идея на счет того: поподает ли...   29.11.2009 11:21
Lapp   я не люблю работать с функциями :nea: я начинаю в ...   29.11.2009 13:09
Kosmik   Я и не думал, что у тебя с этим недопонимание.. ...   29.11.2009 13:17
Archon   Надеюсь учебник есть? Не стесняйся с ним сверяться...   29.11.2009 13:29
Kosmik   Надеюсь учебник есть? Не стесняйся с ним сверятьс...   29.11.2009 14:03


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

 



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