Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.64/22: Рейтинг темы: голосов - 22, средняя оценка - 4.64
2 / 2 / 1
Регистрация: 03.11.2009
Сообщений: 227
1

Точка с координатами

19.09.2010, 16:19. Показов 4467. Ответов 27
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребята такое дело,я только начала изучать C++,а препод уже назадавал очень много и я не знаю как это делать.Примеры однотипные.Я вам напишу один,а остальные уже буду решать по аналогии.Помогите пожалуйста!
Задача толклм не поставлена.Надо составить программу,которая проверяла принадлежит данная точка заданной области или нет?Область на графике находиться в 1 и 3 четверти,между окружностью большего радиуса=2 и меньшего=1.5.
Понятия не имеею как это сделать!!!Кроме того,что раз 1 и 3 четверть,то x*y>0.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.09.2010, 16:19
Ответы с готовыми решениями:

Дана ограниченная область и точка A(x0, y0). Написать программу, которая проверяет, попадает ли точка с координатами пол
Дана ограниченная область и точка A(x0, y0). Написать программу, которая проверяет, попадает ли...

точка с координатами х,у. х<>0
в какой четверти координатной плоскости находится точка с координатами х,у. х&lt;&gt;0

Определить, принадлежит ли точка с координатами
Даны действительные числа x, y. Определить, принадлежит ли точка с координатами (x, y)...

Попадет ли точка с координатами X, Y в фигуру?
нарисуйте две простых фигуры: квадрат с центром в начале координат со стороной 2 и вписанный ромб с...

27
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
19.09.2010, 16:38 2
barlog,
Я так понимаю, окружностьи имеют центр в начале координат? Если так, то вам просто надо посчитать расстояние d от начала координат до заданной точки (d = sqrt(x^2 + y^2 + z^2)) И проверить, попадает ли оно в промежуток [1.5; 2] (т.е. между радиусами окружностей).

Добавлено через 1 минуту
Упс, у нас же двухмерщина)))
Код
d = sqrt(x^2 + y^2)
Добавлено через 14 минут
Что-то вроде этого
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main()
{
    double x, y;
    
    cout << "Input x: ";
    cin >> x;
    cout << "Input y: ";
    cin >> y;
    
    if (x * y < 0.0)
        cout << "No" << endl;
    else
    {
        double d = sqrt(x * x + y * y);
        
        if (d < 1.5 && d > 2.0)
            cout << "No" << endl;
        else
            cout << "Yes" << endl;
    }
 
    system("pause");
    return 0;
}
1
2 / 2 / 1
Регистрация: 03.11.2009
Сообщений: 227
19.09.2010, 20:21  [ТС] 3
Спасибо огромное!Почему я сразу не подумала про формулу расстояния!!!Спасибо!
Только вот в одном номере,тут уже формула расстояний не действует.Тут уже область представляет собой квадрат(1 на 1) ,у которого срезаны углы(прямоугольные треугольники ,у которых катеты равны 0.5).Никто не подаст идею,как в этом случае можно задать оставшуюся область(8ми угольник)?Пожалуйста,подскажите,не могу сообразить.

Добавлено через 22 минуты
Пожалуйста ,подскажите.У меня таких 5 похожих задач!Дайте идею!Как задать???
0
Эксперт С++
261 / 191 / 10
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 1
19.09.2010, 20:24 4
Цитата Сообщение от barlog Посмотреть сообщение
Спасибо огромное!Почему я сразу не подумала про формулу расстояния!!!Спасибо!
Только вот в одном номере,тут уже формула расстояний не действует.Тут уже область представляет собой квадрат(1 на 1) ,у которого срезаны углы(прямоугольные треугольники ,у которых катеты равны 0.5).Никто не подаст идею,как в этом случае можно задать оставшуюся область(8ми угольник)?Пожалуйста,подскажите,не могу сообразить.
Включайте логику, блин
Проверяете, не находится ли точка в квадрате.
Потом проверяете, не находится ли точка в одном из "вырезанных" треугольников.
1
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
19.09.2010, 20:24 5
http://ru.wikipedia.org/wiki/А... оугольнике
0
2 / 2 / 1
Регистрация: 03.11.2009
Сообщений: 227
19.09.2010, 20:31  [ТС] 6
Это я понимаю прекрасно.В квадрате или нет.Но как записать это для программы?Центр квадрата ведь в начале координат.Как это все записать для каждой четверти?...

Добавлено через 53 секунды
Спасибо silent_1991.

Добавлено через 3 минуты
Как-то в викепедии замудренно написано...и я половину не знаю...у меня было только 2 занятия по C++,мы прошли только ввод и вывод,и оператор if...а как-нить по проще и по понятнее...
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
19.09.2010, 20:34 7
barlog,
Ну и что, что в начале координат. Пишите функцию, которая проверяет, не лежит ли точка в каждом из треугольников, возвращающую 0 в случае, если точка лежит в одном из них, или 1 в противном случае.

Псевдо
Код
int проверка()
{
    if (точка лежит в первом треугольнике) return 0;
    if (точка лежит во втором треугольнике) return 0;
    if (точка лежит в третьем треугольнике) return 0;
    if (точка лежит в четвёртом треугольнике) return 0;
    return 1;
}
Добавлено через 1 минуту
В википедии дан код, там два вложенных цикла и куча арифметических операций... Так что ничего сложного, сложность вся в матчасти.
1
2 / 2 / 1
Регистрация: 03.11.2009
Сообщений: 227
19.09.2010, 20:38  [ТС] 8
я не знаю,что такое возвращающее 0...и к чему оно...зачем?...знаю только if...else...(((
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
19.09.2010, 20:41 9
barlo,
Тогда без функции, этот код вставить в основную программу, и везде вместо return 0; писать "Не попадает", а вместо return 1 - "Попадает". Сами разберётесь, как проверку попадания в треугольники делать? Этот вопрос уже не по программированию, и не по си++ в частности.
1
2 / 2 / 1
Регистрация: 03.11.2009
Сообщений: 227
19.09.2010, 20:58  [ТС] 10
да я знаю,голова слабо работает...Всего 12 треугольников(в данном случае).И как я для каждого в разных четвертях задам ураснения ,используя if...?
...я безнадежна((

Добавлено через 7 минут
в викепедии речь идет о каких-то массивах...((

Добавлено через 1 минуту
алгоритм проверки принадлежности к треугольникам мне ясен...а вот само задание треугольников?как задать эти треугольники?они еще не все одинаковые...

Добавлено через 2 минуты
Про сумму всех треугольников тоже ясно...разбившееся маленькие в сумме составляют исходный...все ясно...логика выполнения ясна...а как же это реализовать в программе?как задать это разбиение?...
0
Эксперт С++
261 / 191 / 10
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 1
19.09.2010, 21:02 11
Цитата Сообщение от barlog Посмотреть сообщение
да я знаю,голова слабо работает...Всего 12 треугольников(в данном случае).И как я для каждого в разных четвертях задам ураснения ,используя if...?
...я безнадежна((
Добавлено через 7 минут
в викепедии речь идет о каких-то массивах...((
Добавлено через 1 минуту
алгоритм проверки принадлежности к треугольникам мне ясен...а вот само задание треугольников?как задать эти треугольники?они еще не все одинаковые...
Добавлено через 2 минуты
Про сумму всех треугольников тоже ясно...разбившееся маленькие в сумме составляют исходный...все ясно...логика выполнения ясна...а как же это реализовать в программе?как задать это разбиение?...
Да вы заходите в гости, всё расскажем и покажем. Чего уж клавиатуру мучить.
1
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
19.09.2010, 21:04 12
Стоп. Откуда их 12?
1
2 / 2 / 1
Регистрация: 03.11.2009
Сообщений: 227
19.09.2010, 21:18  [ТС] 13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
int into(double sx, double sy)
{
    int pj, pk=0;
    double wrkx, yu, yl;
    for (pj=0; pj<n; pj++)
    {
        yu = y[pj]>y[(pj+1)%n]?y[pj]:y[(pj+1)%n];
        yl = y[pj]<y[(pj+1)%n]?y[pj]:y[(pj+1)%n];
        if (y[(pj+1)%n] - y[pj])
            wrkx = x[pj] + (x[(pj+1)%n] - x[pj])*(sy - y[pj])/(y[(pj+1)%n] - y[pj]);
        else
            wrkx = x[pj];
        if (yu >= sy) 
            if (yl < sy)
            {
                if (sx > wrkx)
                        pk++;
                if (fabs(sx - wrkx) < 0.00001) return 1;
            }
        if ((fabs(sy - yl) < 0.00001) && (fabs(yu - yl) < 0.00001) && (fabs(fabs(wrkx - x[pj]) + fabs(wrkx - x[(pj+1)%n]) - fabs(x[pj] - x[(pj+1)%n])) < 0.0001))
            return 1;
    }
    if (pk%2) 
        return 1;
    else
        return 0;
}
Как я понимаю это решает мою задачу....но мне здесь ничего не понятно....можно как-то проще сделать?Добрые люди,помогите,пожалуйста.

Добавлено через 2 минуты
ну оператор if -ясно....а что под ним написано - нет...

Добавлено через 2 минуты
как откуда 12...по 3 треугольника в каждой четверти...а если не обращать внимание на четверти,то их будет 8.....наверное.....

Добавлено через 2 минуты
а я не знаю pointlnPolygon...
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
19.09.2010, 21:23 14
Теперь я вас не понимаю... Тут ничего сверхъестественного нет, всё стандартно. Скажите, что вам не понятно?

Добавлено через 2 минуты
Здесь много операторов иф. Что конкретно не ясно?
и с чего по 3 треугольника в каждой четверти-то? Дан квадрат. У него срезаны углы. У квадрата центр в начале координат. Следовательно по одному треугольнику в каждой четверти.
а я не знаю pointlnPolygon...
К чему это?..
1
2 / 2 / 1
Регистрация: 03.11.2009
Сообщений: 227
19.09.2010, 21:31  [ТС] 15
Неа он не так срезан....смотрите у нас есть квадрат с центром в начале координат...рассмотрим например 1 четверть она тоже квадрат(размеры 1 на 1) и у этого квадратика срезают маленький уголок(прямоугольный треугольник с катетами по 0.5),в результате вместо этого квадратика получается пятиугольник с 3мя прямыми углами и 2мя тупыми....и если соединить начало координат с двумя вершинами этого пятиугольника будет 3 треугольника....2 прямоугольных и 1 равнобедренный...

Добавлено через 1 минуту
это я виновата:размер всего квадрата 2 на 2.Это координаты пересечения с x и y равны 1.Извините...

Добавлено через 30 секунд
Вот из-за чего непонимание...
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
19.09.2010, 21:34 16
Можно текст задания дословно?
1
2 / 2 / 1
Регистрация: 03.11.2009
Сообщений: 227
19.09.2010, 21:44  [ТС] 17
Текста нет только рисунок...это вот эта область....Определить принадлежит точка с координатами x и y данной области или нет?Область это квадрат размером 2 на 2 в центре координат со срезанными уголками,так как описано выше.
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
19.09.2010, 21:57 18
Ну а хотя бы рисунок выложите
1
2 / 2 / 1
Регистрация: 03.11.2009
Сообщений: 227
19.09.2010, 22:07  [ТС] 19
вот это ...и центр его в начале координат
Изображения
 
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
19.09.2010, 22:12 20
Ну и где вы видите 12 треугольников? Вам сначала надо определить, попадает ли точка в квадрат. Отбросив то, что у него срезаны углы. А затем определить, не попадает ли точка в один из срезанных углов (т.е. в один из треугольников). Если точка лежит в квадрате и не лежит ни в одном из треугольников - она лежит в области. иначе - не лежит.
1
19.09.2010, 22:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.09.2010, 22:12
Помогаю со студенческими работами здесь

Определить, принадлежит ли точка с координатами...
Была бы безумно благодарна за объяснение по подобным типовым задачам (ниже). Погуглила, видела...

Принадлежит ли точка с координатами (х, у) заданной области?
Для данных областей составить программу, которая печатает true, если точка с координатами (х, у)...

Точка с координатами (х, у) принадлежит части плоскости
Точка с координатами (х, у) принадлежит части плоскости, лежащей между прямыми х— m, х= n (m&lt;m)...

Попадает ли точка с заданными координатами в полукруг
Определить, попадает ли точка с заданными координатами в полукруг радиусом R, расположенный в I и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru