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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.83
Iternity
0 / 0 / 0
Регистрация: 25.09.2011
Сообщений: 14
#1

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

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

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

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

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

Размер: 5.0 Кб
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2011, 14:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить, принадлежит ли точка с координатами x, y заштрихованной части плоскости (C++):

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

Определить, принадлежит ли точка с координатами (Х,У) заштрихованной части плоскости - C++
1. Даны целые числа Х,У. Определить, принадлежит ли точка с координатами (Х,У) заштрихованной части плоскости. Составить математическую...

Определить,принадлежит ли точка с координатами Х,У заштрихованной части плоскости - C++
Ребят выручайте, ну прям очень надо. Осталось выполнить последнее задание, знаю для вас это очень просто. Заранее огромное спасибо!!! ...

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

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

Определить, принадлежит ли точка с координатами (х, у) заштрихованной части плоскости - C++
Задание: 1) Определить, принадлежит ли точка с координатами (х, у) заштрихованной части плоскости

31
Olga_
842 / 184 / 16
Регистрация: 01.08.2011
Сообщений: 502
25.09.2011, 17:08 #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;
}
1
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
25.09.2011, 17:10 #17
Цитата Сообщение от Iternity Посмотреть сообщение
Как всё-таки сделать чтобы программка заработала?
На 2005 студии - никак.
0
Iternity
0 / 0 / 0
Регистрация: 25.09.2011
Сообщений: 14
25.09.2011, 17:13  [ТС] #18
Olga_, работает! Премного благодарен!
0
Olga_
842 / 184 / 16
Регистрация: 01.08.2011
Сообщений: 502
25.09.2011, 17:15 #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;
}
0
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
25.09.2011, 17:15 #20
Цитата Сообщение от Iternity Посмотреть сообщение
И надо чтобы до этого допер такой валенок как я, чтобы потом препод порадовался моим знаниям
Насчет моего кода - я использую следующий алгоритм:
Если точка D лежит в треугольнике ABC, то сумма площадей треугольников ABD, BCD, ACD равна площади треугольника ABC. Если не равна - то точка лежит вне треугольника. Что я и проверяю.
Более кошерный способ - найти косое произведение векторов, и площадь получившегося параллелограмма поделить на 2. Но я как-то не въехал, как там формула получается...(
0
Olga_
842 / 184 / 16
Регистрация: 01.08.2011
Сообщений: 502
25.09.2011, 17:17 #21
И с тернарным оператором:


C
1
2
3
4
5
6
7
8
#include<stdio.h>
int main()
{
   double x, y;
   scanf("%lf%lf", &x, &y);
   (x >= 0 && x <= 2 && y >= 0 && y <= x/2.0) ? printf("yes") : printf("no");
   return 0;
}
1
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
25.09.2011, 17:22 #22
Цитата Сообщение от Olga_ Посмотреть сообщение
Уравнение прямой y = x/2
Мм... Через уравнения прямой тоже можно, но я про произведения векторов
C++
1
2
3
4
5
6
7
int triangle_square_2 (int x1, int y1, int x2, int y2, int x3, int y3) {
    return x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2);
}
 
double triangle_square (int x1, int y1, int x2, int y2, int x3, int y3) {
    return abs (triangle_square_2 (x1, y1, x2, y2, x3, y3)) / 2.0;
}
Вот формула, как-то я недопонял, откуда она берется.
P.S. насчет произведения векторов - алгоритм тот же остается, просто точность не теряется. А у меня формула Герона используется, там квадратные корни...
0
Olga_
842 / 184 / 16
Регистрация: 01.08.2011
Сообщений: 502
25.09.2011, 17:25 #23
diagon, площадь треугольника по формуле Герона никто не ищет, есть более простой способ:

http://www.cyberforum.ru/cgi-bin/latex.cgi?S = \frac{1}{2}|(x3-x1)(y2-y1)-(x2-x1)(y3-y1)|
0
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
25.09.2011, 17:27 #24

Не по теме:

Цитата Сообщение от diagon Посмотреть сообщение
Но я как-то не въехал, как там формула получается
очень просто:
http://www.cyberforum.ru/cgi-bin/latex.cgi?\vec V = \{V_x, V_y\}, \, \vec U = \{U_x, U_y\}
http://www.cyberforum.ru/cgi-bin/latex.cgi?\vec V \otimes \vec U = \begin{vmatrix}<br />
V_x & V_y \\<br />
U_x & U_y<br />
\end{vmatrix}



Цитата Сообщение от Olga_ Посмотреть сообщение
diagon, площадь треугольника по формуле Герона никто не ищет, есть более простой способ
а это и есть:
Цитата Сообщение от diagon Посмотреть сообщение
Более кошерный способ - найти косое произведение векторов, и площадь получившегося параллелограмма поделить на 2
1
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
25.09.2011, 17:29 #25
Цитата Сообщение от Olga_ Посмотреть сообщение
diagon, площадь треугольника по формуле Герона никто не ищет, есть более простой способ:

http://www.cyberforum.ru/cgi-bin/latex.cgi?S = \frac{1}{2}|(x3-x1)(y2-y1)-(x2-x1)(y3-y1)|
Ну в коде эта же формула, непонятно просто было, откуда она берется =\

Цитата Сообщение от Nameless One Посмотреть сообщение

Не по теме:


очень просто:
http://www.cyberforum.ru/cgi-bin/latex.cgi?\vec V = \{V_x, V_y\}, \, \vec U = \{U_x, U_y\}
http://www.cyberforum.ru/cgi-bin/latex.cgi?\vec V \otimes \vec U = \begin{vmatrix}<br />
V_x & V_y \\<br />
U_x & U_y<br />
\end{vmatrix}



Добавлено через 1 минуту

а это и есть:

Хм... Т.е. эта формула из определителя матрицы берется? Не думал, что геометрия и линейная алгебра как-то связаны... =)
0
Iternity
0 / 0 / 0
Регистрация: 25.09.2011
Сообщений: 14
25.09.2011, 17:43  [ТС] #26
Olga_, ещё раз спасибо!
0
Olga_
842 / 184 / 16
Регистрация: 01.08.2011
Сообщений: 502
25.09.2011, 17:54 #27
Nameless One, вы про случай ориентированных мер пишите, ваша формула и моя не одно и тоже (без модуля).
1
Iternity
0 / 0 / 0
Регистрация: 25.09.2011
Сообщений: 14
25.09.2011, 17:55  [ТС] #28
Последний вопрос на эту неделю, честно-честно!

Написал кое-как программку, которая при A>0 и A<=PI считает y по одной формуле, а при A>PI по другой, она вроде компилится, работает, но при её запуске выскакивает сообщение "Run-Time Check Failure #3 - The variable 'r1' is being used without being initialized.". В чем может быть проблема?

Код
#define WIN32_LEAN_AND_MEAN
#include <stdio.h>
#include <tchar.h>
#include <conio.h>
#define _USE_MATH_DEFINES
#include <math.h>   
#include <iostream>
using namespace std;

int main()
   {
     double a, y, r1, r2, r3, r4;         
             
	 cout << "Vvedite a" << endl;
	 cin >> a;

	 if ((a>0) && (a<=M_PI))
	 
     r1=1-2*pow(sin(a),2);
	 r2=1+sin(2*a); 

	 y=r1/r2;
	 ;
            	
	 if ((a>M_PI))
	 
	 r3=1-tan(a);
	 r4=1+tan(a);
	 y=(r3/r4)+11;
	 ;

	 cout << y << endl;
    _getch();      
    return 0;
 }
0
Olga_
842 / 184 / 16
Регистрация: 01.08.2011
Сообщений: 502
25.09.2011, 18:02 #29
Цитата Сообщение от diagon Посмотреть сообщение
Не думал, что геометрия и линейная алгебра как-то связаны... =)
Они ОЧЕНЬ тесно связаны.
1
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
25.09.2011, 18:24 #30
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от diagon Посмотреть сообщение
Т.е. эта формула из определителя матрицы берется? Не думал, что геометрия и линейная алгебра как-то связаны... =)
Определитель - это просто более удобная (и запоминающаяся) форма записи данного выражения. Формула же берется из определения:
http://www.cyberforum.ru/cgi-bin/latex.cgi?\vec V \otimes \vec U = |\vec V| \cdot |\vec U| sin \alpha, \; \alpha - угол вращения от http://www.cyberforum.ru/cgi-bin/latex.cgi?\vec V к http://www.cyberforum.ru/cgi-bin/latex.cgi?\vec U
Можно легко доказать, что для разложения http://www.cyberforum.ru/cgi-bin/latex.cgi?\vec V = \{V_x, V_y\}, \, \vec U = \{U_x, U_y\} в любом ортонормированном базисе http://www.cyberforum.ru/cgi-bin/latex.cgi?<\vec i, \vec j> будет верна и формула вычисления произведения через определитель.
Доказательство
Воспользуемся тем, что косое произведение линейно и антикоммутативно (подробнее - на википедию).
Очевидно, что для любого ортонормированного базиса http://www.cyberforum.ru/cgi-bin/latex.cgi?<\vec i, \vec j> будут выполняться следующие равенства: http://www.cyberforum.ru/cgi-bin/latex.cgi?|\vec i \otimes \vec j| = 1, \; \vec i \otimes \vec i = 0
Тогда верно следующее (положим для удобства, что угол поворота от http://www.cyberforum.ru/cgi-bin/latex.cgi?\vec i до http://www.cyberforum.ru/cgi-bin/latex.cgi?\vec j равен http://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{\pi}{2}):
http://www.cyberforum.ru/cgi-bin/latex.cgi?\vec V \otimes \vec U = (V_x \vec i + V_y \vec j) \otimes (U_x \vec i + U_y \vec j) = (V_x \vec i + V_y \vec j) \otimes U_x \vec i + (V_x \vec i + V_y \vec j) \otimes U_y \vec j =
http://www.cyberforum.ru/cgi-bin/latex.cgi?= V_x U_x \vec i \otimes \vec i + V_y U_x \vec j \otimes \vec i + V_x U_y \vec i \otimes \vec j + V_y U_y \vec j \otimes \vec j = V_y U_x \vec j \otimes \vec i + V_x U_y \vec i \otimes \vec j =
http://www.cyberforum.ru/cgi-bin/latex.cgi? - \, V_y U_x \vec i \otimes \vec j + V_x U_y \vec i \otimes \vec j = (V_x U_y - V_y U_x) \vec i \otimes \vec j = V_x U_y - V_y U_x = \begin{vmatrix}<br />
V_x & V_y \\<br />
U_x & U_y<br />
\end{vmatrix}


Iternity, если в 18 строке не выполняется условие, то дальше переменная r1 не иницилизируется, но используется дальше в программе. Аналогично с условием в строке 26 и переменной r3. Думаю, тут не выделены условные блоки:
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
#define WIN32_LEAN_AND_MEAN
#include <stdio.h>
#include <tchar.h>
#include <conio.h>
#define _USE_MATH_DEFINES
#include <math.h>   
#include <iostream>
using namespace std;
 
int main()
{
     double a, y, r1, r2, r3, r4;         
             
     cout << "Vvedite a" << endl;
     cin >> a;
 
     if ((a>0) && (a<=M_PI))
     {    
         r1=1-2*pow(sin(a),2);
         r2=1+sin(2*a); 
 
         y=r1/r2;
     }
                
     if ((a>M_PI))
     {    
         r3=1-tan(a);
         r4=1+tan(a);
         y=(r3/r4)+11;
     }
 
    cout << y << endl;
    _getch();      
    return 0;
 }
3
25.09.2011, 18:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.09.2011, 18:24
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

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