Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/34: Рейтинг темы: голосов - 34, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 25.09.2011
Сообщений: 14

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

25.09.2011, 14:58. Показов 7576. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Помогите пожалуйста полному чайнику решить две задачки.

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

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

Размер: 5.0 Кб
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.09.2011, 14:58
Ответы с готовыми решениями:

Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости
Битый час сижу, но так и не могу ничего придумать, прошу помощи) Даны действительные числа x, y. Определить, принадлежит ли точка с...

Определить, принадлежит ли точка с координатами (x,y) заштрихованной части плоскости
даны произвольные числа x,y.Определить, принадлежит ли точка с координатами (x,y) заштрихованной части плоскости(включая ее границы) ...

Определить, принадлежит ли точка с координатами х, у заштрихованной части плоскости
Нужно определить, принадлежит ли точка с координатами х, у заштрихованной части плоскости: Вот сам рисунок (насколько я разглядел и...

31
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
25.09.2011, 15:04
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Насчет второго - видимо нужно определить принадлежность точки треугольнику. Писал похожее недавно
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 координаты в вводе - точки треугольника, последняя - координата точки.
2
0 / 0 / 0
Регистрация: 25.09.2011
Сообщений: 14
25.09.2011, 15:19  [ТС]
Цитата Сообщение от diagon Посмотреть сообщение
Первые 3 координаты в вводе - точки треугольника, последняя - координата точки.
А как сделать чтобы координаты были заданы уже в коде программы, а в вводе указывалась только координата точки?
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
25.09.2011, 15:24
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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 строке задаются, если что.
1
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
25.09.2011, 16:01
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Первое:
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;
}
Естественно, можно было сделать проще, но мы ведь не ищем легких путей?
1
0 / 0 / 0
Регистрация: 25.09.2011
Сообщений: 14
25.09.2011, 16:29  [ТС]
Цитата Сообщение от Nameless One Посмотреть сообщение
Естественно, можно было сделать проще, но мы ведь не ищем легких путей?
Спасибо большое!
Но вот про легкие пути, то мы их ищем) И надо чтобы до этого допер такой валенок как я, чтобы потом препод порадовался моим знаниям
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
25.09.2011, 16:36
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Проще некуда:
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;
}
1
 Аватар для Olga_
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
25.09.2011, 16:44
#define MIN(x, y) ((x) < (y) ? (x) : (y))

min(a, b, c) = MIN(MIN(a, b), c)
1
0 / 0 / 0
Регистрация: 25.09.2011
Сообщений: 14
25.09.2011, 16:46  [ТС]
asics, не компилится... выдаёт кучу ошибок.
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
25.09.2011, 16:49
Iternity, http://liveworkspace.org/code/... 35daede0a9
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
25.09.2011, 16:54
Iternity, это initializer list из C++11. Поддерживается свежими версиями gcc и cl.exe (вроде бы)
0
25.09.2011, 16:57

Не по теме:

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

1
0 / 0 / 0
Регистрация: 25.09.2011
Сообщений: 14
25.09.2011, 17:00  [ТС]
Цитата Сообщение от asics Посмотреть сообщение
У меня ничего не происходит :\

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

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 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 : ')'
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
25.09.2011, 17:02
Ответ в сообщении #12
0
0 / 0 / 0
Регистрация: 25.09.2011
Сообщений: 14
25.09.2011, 17:07  [ТС]
Nameless One, asics, извиняюсь за свою тупость, но ничего уж тут не поделаешь, глухо дело
Как всё-таки сделать чтобы программка заработала? Просто дело ещё в том, что она должна пойти на 2005 визуале, который стоит на компах в универе.
0
 Аватар для Olga_
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
25.09.2011, 17:08
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;
}
1
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
25.09.2011, 17:10
Цитата Сообщение от Iternity Посмотреть сообщение
Как всё-таки сделать чтобы программка заработала?
На 2005 студии - никак.
0
0 / 0 / 0
Регистрация: 25.09.2011
Сообщений: 14
25.09.2011, 17:13  [ТС]
Olga_, работает! Премного благодарен!
0
 Аватар для Olga_
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
25.09.2011, 17:15
Цитата Сообщение от 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;
}
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
25.09.2011, 17:15
Цитата Сообщение от Iternity Посмотреть сообщение
И надо чтобы до этого допер такой валенок как я, чтобы потом препод порадовался моим знаниям
Насчет моего кода - я использую следующий алгоритм:
Если точка D лежит в треугольнике ABC, то сумма площадей треугольников ABD, BCD, ACD равна площади треугольника ABC. Если не равна - то точка лежит вне треугольника. Что я и проверяю.
Более кошерный способ - найти косое произведение векторов, и площадь получившегося параллелограмма поделить на 2. Но я как-то не въехал, как там формула получается...(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.09.2011, 17:15
Помогаю со студенческими работами здесь

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

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

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

Определить,принадлежит ли точка с координатами Х,У заштрихованной части плоскости
Помогите пожалуйста. За ранее спасибо. Даны целые числа Х и У. Определить, принадлежит ли точка с координатами Х,У заштрихованной части...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru