Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
#1

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

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

Ребята такое дело,я только начала изучать C++,а препод уже назадавал очень много и я не знаю как это делать.Примеры однотипные.Я вам напишу один,а остальные уже буду решать по аналогии.Помогите пожалуйста!
Задача толклм не поставлена.Надо составить программу,которая проверяла принадлежит данная точка заданной области или нет?Область на графике находиться в 1 и 3 четверти,между окружностью большего радиуса=2 и меньшего=1.5.
Понятия не имеею как это сделать!!!Кроме того,что раз 1 и 3 четверть,то x*y>0.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2010, 16:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Точка с координатами (C++):

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

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

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

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

Принадлежит ли точка с координатами (x,y) заданной фигуре - C++
c++ составить программу, которая определяет, принадлежит ли точка с координатами (x,y) объединению закрашенных областей данного графика....

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

27
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
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
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
19.09.2010, 20:21  [ТС] #3
Спасибо огромное!Почему я сразу не подумала про формулу расстояния!!!Спасибо!
Только вот в одном номере,тут уже формула расстояний не действует.Тут уже область представляет собой квадрат(1 на 1) ,у которого срезаны углы(прямоугольные треугольники ,у которых катеты равны 0.5).Никто не подаст идею,как в этом случае можно задать оставшуюся область(8ми угольник)?Пожалуйста,подскажите,не могу сообразить.

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

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

Добавлено через 3 минуты
Как-то в викепедии замудренно написано...и я половину не знаю...у меня было только 2 занятия по C++,мы прошли только ввод и вывод,и оператор if...а как-нить по проще и по понятнее...
0
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
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
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
19.09.2010, 20:38  [ТС] #8
я не знаю,что такое возвращающее 0...и к чему оно...зачем?...знаю только if...else...(((
0
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
19.09.2010, 20:41 #9
barlo,
Тогда без функции, этот код вставить в основную программу, и везде вместо return 0; писать "Не попадает", а вместо return 1 - "Попадает". Сами разберётесь, как проверку попадания в треугольники делать? Этот вопрос уже не по программированию, и не по си++ в частности.
1
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
19.09.2010, 20:58  [ТС] #10
да я знаю,голова слабо работает...Всего 12 треугольников(в данном случае).И как я для каждого в разных четвертях задам ураснения ,используя if...?
...я безнадежна((

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

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

Добавлено через 2 минуты
Про сумму всех треугольников тоже ясно...разбившееся маленькие в сумме составляют исходный...все ясно...логика выполнения ясна...а как же это реализовать в программе?как задать это разбиение?...
0
Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 1
19.09.2010, 21:02 #11
Цитата Сообщение от barlog Посмотреть сообщение
да я знаю,голова слабо работает...Всего 12 треугольников(в данном случае).И как я для каждого в разных четвертях задам ураснения ,используя if...?
...я безнадежна((
Добавлено через 7 минут
в викепедии речь идет о каких-то массивах...((
Добавлено через 1 минуту
алгоритм проверки принадлежности к треугольникам мне ясен...а вот само задание треугольников?как задать эти треугольники?они еще не все одинаковые...
Добавлено через 2 минуты
Про сумму всех треугольников тоже ясно...разбившееся маленькие в сумме составляют исходный...все ясно...логика выполнения ясна...а как же это реализовать в программе?как задать это разбиение?...
Да вы заходите в гости, всё расскажем и покажем. Чего уж клавиатуру мучить.
1
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
19.09.2010, 21:04 #12
Стоп. Откуда их 12?
1
barlog
2 / 2 / 0
Регистрация: 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
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
19.09.2010, 21:23 #14
Теперь я вас не понимаю... Тут ничего сверхъестественного нет, всё стандартно. Скажите, что вам не понятно?

Добавлено через 2 минуты
Здесь много операторов иф. Что конкретно не ясно?
и с чего по 3 треугольника в каждой четверти-то? Дан квадрат. У него срезаны углы. У квадрата центр в начале координат. Следовательно по одному треугольнику в каждой четверти.
а я не знаю pointlnPolygon...
К чему это?..
1
barlog
2 / 2 / 0
Регистрация: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.09.2010, 21:31
Привет! Вот еще темы с ответами:

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

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

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

Попадает ли точка с координатами (x,y) в закрашенную область - C++
Помогите написать программу на С++, которая будет считать при вводе с клавиатуры координат х и у, попадет ли в заштрихованную область


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
19.09.2010, 21:31
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru