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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.83
Iternity
0 / 0 / 0
Регистрация: 25.09.2011
Сообщений: 14
25.09.2011, 14:58     Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости #1
Здравствуйте! Помогите пожалуйста полному чайнику решить две задачки.

1) Даны действительные числа x1, y1, x2, y2. Вычислить min(x1, y1, x2, y2)+min(x1,x2,y1).

2) Даны вещественные числа x, y. Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости. Результат вывести в виде текстового сообщения. Представить варианты программы с использованием условного оператора if и тернарной условной операции.
Название: graph1.png
Просмотров: 304

Размер: 5.0 Кб
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2011, 14:58     Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости
Посмотрите здесь:

Определить, принадлежит ли точка с координатами (x,y) заштрихованной части плоскости C++
C++ Определить,принадлежит ли точка с координатами Х,У заштрихованной части плоскости
C++ Определить,принадлежит ли точка с координатами Х,У заштрихованной части плоскости
Определить, принадлежит ли точка с координатами (Х,У) заштрихованной части плоскости C++
Определить принадлежит ли точка с координатами (x; y) заштрихованной части плоскости C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
25.09.2011, 15:04     Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Насчет второго - видимо нужно определить принадлежность точки треугольнику. Писал похожее недавно
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <iostream>
#include <cmath>
#include <limits>
 
struct pt
{
    double x, y;
};
 
std::istream& operator >> ( std::istream& stream, pt& a )
{
    stream >> a.x >> a.y;
    return stream;
}
 
class seg
{
    pt a, b;
 
public:
 
    seg( pt _a, pt _b )
    { 
        a = _a;
        b = _b;
    }
 
    double len() const
    {
        return sqrt( 1. * (a.x - b.x) * (a.x - b.x) + 1.* (a.y - b.y) * ( a.y - b.y ) );
    }
};
 
class triangle
{
    pt a, b, c;
    
public:
    
    triangle( const pt& _a, const pt& _b, const pt& _c )
    {
        a = _a;
        b = _b;
        c = _c;
    }
    
    double square() const
    {
        double ab = seg(a, b).len();
        double ac = seg(a, c).len();
        double bc = seg(b, c).len();
        
        double p = (ab + ac + bc) / 2;
        
        return sqrt( p * (p - ab) * (p - ac) * (p - bc) );
    }
    
};
 
int main()
{
    //freopen("input.txt", "r", stdin);
    //freopen("output.txt", "w", stdout);
    
    pt a, b ,c, d;
    
    std::cin >> a >> b >> c >> d;
    
    double sum = 
        triangle(a, b, d).square() +
        triangle(b, c, d).square() +
        triangle(c, a, d).square();
    
    const double EPS = 0.00001;
    
    if ( fabs( sum - triangle(a, b, c).square() ) < EPS )
        std::cout << "In";
    else
        std::cout << "Out";
}
Первые 3 координаты в вводе - точки треугольника, последняя - координата точки.
Iternity
0 / 0 / 0
Регистрация: 25.09.2011
Сообщений: 14
25.09.2011, 15:19  [ТС]     Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости #3
Цитата Сообщение от diagon Посмотреть сообщение
Первые 3 координаты в вводе - точки треугольника, последняя - координата точки.
А как сделать чтобы координаты были заданы уже в коде программы, а в вводе указывалась только координата точки?
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
25.09.2011, 15:24     Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include <iostream>
#include <cmath>
#include <limits>
 
struct pt
{
    double x, y;
    
    pt()
    {
        x = y = 0;
    }
    
    pt( double _x, double _y )
    {
        x = _x;
        y = _y;
    }
};
 
std::istream& operator >> ( std::istream& stream, pt& a )
{
    stream >> a.x >> a.y;
    return stream;
}
 
class seg
{
    pt a, b;
 
public:
 
    seg( pt _a, pt _b )
    { 
        a = _a;
        b = _b;
    }
 
    double len() const
    {
        return sqrt( 1. * (a.x - b.x) * (a.x - b.x) + 1.* (a.y - b.y) * ( a.y - b.y ) );
    }
};
 
class triangle
{
    pt a, b, c;
    
public:
    
    triangle( const pt& _a, const pt& _b, const pt& _c )
    {
        a = _a;
        b = _b;
        c = _c;
    }
    
    double square() const
    {
        double ab = seg(a, b).len();
        double ac = seg(a, c).len();
        double bc = seg(b, c).len();
        
        double p = (ab + ac + bc) / 2;
        
        return sqrt( p * (p - ab) * (p - ac) * (p - bc) );
    }
    
};
 
int main()
{
 
    pt a(0, 0), b(2, 0) ,c(1, 2), d;
    std::cin >> d;
    
    double sum = 
        triangle(a, b, d).square() +
        triangle(b, c, d).square() +
        triangle(c, a, d).square();
    
    const double EPS = 0.00001;
    
    if ( fabs( sum - triangle(a, b, c).square() ) < EPS )
        std::cout << "In";
    else
        std::cout << "Out";
}
Координаты в 74 строке задаются, если что.
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
25.09.2011, 16:01     Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Первое:
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
30
31
32
33
34
35
36
37
38
39
40
41
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
 
double min(size_t cnt, ...);
 
int main()
{
    double x1, y1, x2, y2;
    printf("Input for numbers: ");
    scanf("%lf %lf %lf %lf", &x1, &y1, &x2, &y2);
 
    printf("min(%.2f, %.2f, %.2f, %.2f)+min(%.2f, %.2f, %.2f)=%.2f\n",
       x1, y1, x2, y2, x1, x2, y1,
       min(4, x1, y1, x2, y2) + min(3, x1, x2, y1));
    
    exit(0);
}
 
double min(size_t cnt, ...)
{
    double result, current;
    va_list ap;
    
    if(cnt == 0)
    fputs("Take your meds, you psycho! Can't find the minimum of no numbers!\n", stderr), exit(1);
 
 
    va_start(ap, cnt);
 
    result = va_arg(ap, double);
 
    while(--cnt)
    {
    current = va_arg(ap, double);
    result = (result < current ? result : current);
    }
    
    va_end(ap);
    return result;
}
Естественно, можно было сделать проще, но мы ведь не ищем легких путей?
Iternity
0 / 0 / 0
Регистрация: 25.09.2011
Сообщений: 14
25.09.2011, 16:29  [ТС]     Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости #6
Цитата Сообщение от Nameless One Посмотреть сообщение
Естественно, можно было сделать проще, но мы ведь не ищем легких путей?
Спасибо большое!
Но вот про легкие пути, то мы их ищем) И надо чтобы до этого допер такой валенок как я, чтобы потом препод порадовался моим знаниям
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
25.09.2011, 16:36     Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Проще некуда:
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <algorithm>
 
int main(){
  double x1, y1, x2, y2;
  std::cin >> x1 >> y2 >> x2 >> y2;
  std::cout << std::min({x1, y1, x2, y2}) + std::min({x1, x2, y1});
  return 0;
}
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
25.09.2011, 16:44     Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости #8
#define MIN(x, y) ((x) < (y) ? (x) : (y))

min(a, b, c) = MIN(MIN(a, b), c)
Iternity
0 / 0 / 0
Регистрация: 25.09.2011
Сообщений: 14
25.09.2011, 16:46  [ТС]     Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости #9
asics, не компилится... выдаёт кучу ошибок.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
25.09.2011, 16:49     Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости #10
Iternity, http://liveworkspace.org/code/36f419...2ed635daede0a9
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
25.09.2011, 16:54     Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости #11
Iternity, это initializer list из C++11. Поддерживается свежими версиями gcc и cl.exe (вроде бы)
asics
25.09.2011, 16:57
  #12

Не по теме:

Цитата Сообщение от Nameless One Посмотреть сообщение
cl.exe (вроде бы)
Пока еще нет...

Iternity
0 / 0 / 0
Регистрация: 25.09.2011
Сообщений: 14
25.09.2011, 17:00  [ТС]     Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости #13
Цитата Сообщение от asics Посмотреть сообщение
У меня ничего не происходит :\

У меня стоит Visual studio 2010. И выдаёт вот это:

Код
 error C2143: syntax error : missing ')' before '{'
1> 'const _Ty &std::min(const _Ty &,const _Ty &,_Pr)' : expects 3 arguments - 0 provided
1>  c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(2101) : see declaration of 'std::min'
1> error C2780: 'const _Ty &std::min(const _Ty &,const _Ty &)' : expects 2 arguments - 0 provided
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(2093) : see declaration of 'std::min'
1>error C2143: syntax error : missing ';' before '{'
1> error C2143: syntax error : missing ';' before '}'
1> error C2059: syntax error : ')'
1> error C2143: syntax error : missing ')' before '{'
1> error C2780: 'const _Ty &std::min(const _Ty &,const _Ty &,_Pr)' : expects 3 arguments - 0 provided
1>   c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(2101) : see declaration of 'std::min'
1> error C2780: 'const _Ty &std::min(const _Ty &,const _Ty &)' : expects 2 arguments - 0 provided
1>  c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(2093) : see declaration of 'std::min'
1> error C2143: syntax error : missing ';' before '{'
1> error C2143: syntax error : missing ';' before '}'
1>d error C2059: syntax error : ')'
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
25.09.2011, 17:02     Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости #14
Ответ в сообщении #12
Iternity
0 / 0 / 0
Регистрация: 25.09.2011
Сообщений: 14
25.09.2011, 17:07  [ТС]     Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости #15
Nameless One, asics, извиняюсь за свою тупость, но ничего уж тут не поделаешь, глухо дело
Как всё-таки сделать чтобы программка заработала? Просто дело ещё в том, что она должна пойти на 2005 визуале, который стоит на компах в универе.
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
25.09.2011, 17:08     Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости #16
C
1
2
3
4
5
6
7
8
9
#include<stdio.h>
#define MIN(x, y) ((x) < (y) ? (x) : (y))
int main()
{
   double x1, x2, y1, y2;
   scanf("%lf%lf%lf%lf", &x1, &y1, &x2, &y2);
   printf("%f\n", MIN(MIN(x1, y2), MIN(x1,y2)) + MIN(MIN(x1,x2),y1));
   return 0;
}
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
25.09.2011, 17:10     Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости #17
Цитата Сообщение от Iternity Посмотреть сообщение
Как всё-таки сделать чтобы программка заработала?
На 2005 студии - никак.
Iternity
0 / 0 / 0
Регистрация: 25.09.2011
Сообщений: 14
25.09.2011, 17:13  [ТС]     Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости #18
Olga_, работает! Премного благодарен!
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
25.09.2011, 17:15     Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости #19
Цитата Сообщение от Iternity Посмотреть сообщение
Olga_, работает! Премного благодарен!
А вот второе задание:
C
1
2
3
4
5
6
7
8
9
10
11
#include<stdio.h>
int main()
{
   double x, y;
   scanf("%lf%lf", &x, &y);
   if (x >= 0 && x <= 2 && y >= 0 && y <= x/2.0)
      printf("yes");
   else
      printf("no");
   return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.09.2011, 17:15     Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
25.09.2011, 17:15     Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости #20
Цитата Сообщение от Iternity Посмотреть сообщение
И надо чтобы до этого допер такой валенок как я, чтобы потом препод порадовался моим знаниям
Насчет моего кода - я использую следующий алгоритм:
Если точка D лежит в треугольнике ABC, то сумма площадей треугольников ABD, BCD, ACD равна площади треугольника ABC. Если не равна - то точка лежит вне треугольника. Что я и проверяю.
Более кошерный способ - найти косое произведение векторов, и площадь получившегося параллелограмма поделить на 2. Но я как-то не въехал, как там формула получается...(
Yandex
Объявления
25.09.2011, 17:15     Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости
Ответ Создать тему
Опции темы

Текущее время: 13:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru