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

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

Войти
Регистрация
Восстановить пароль
 
mmeexx
0 / 0 / 0
Регистрация: 09.10.2013
Сообщений: 170
#1

Даны два отрезка действительной прямой. Определить, содержится ли один из них полностью в другом. - C++

23.01.2014, 18:41. Просмотров 420. Ответов 7
Метки нет (Все метки)

Доброго времени суток! Программа работает, но результат неправильный. Задача состоит в следующем:Даны два отрезка действительной прямой. Определить, содержится ли один из них полностью в другом. Для проверки использовал числа: x1=1; y1=2;
x2=0; y2=3.
Результат: Отрезки не совпадают или не содержатся один в другом. По идее должен быть ответ Противоположным. Помогите пожалуйста!
C++ (Qt)
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
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{ float x1 , x2, y1,y2;
cout<<"Enter the coordinates of the segments:\n";
cout<<"first segment:\n";
cout<<"x=";
cin>>x1;
cout<<"y=";
cin>>y1;
cout<<"Second segment:\n";
cout<<"x=";
cin>>x2;
cout<<"y=";
cin>>y2;
if ( (x1<x2)&&(y1<y2)||(x1>x2)&&(y1>y2)) { 
    cout<<"the first or second segment is completely contained in another";
    }
else if( (x1=x2)&&(y1=y2)) {
        cout<<"segments coincide";
    } else cout<<"segments do not coincide and are not contained in each other";
     
    system("PAUSE");
    return EXIT_SUCCESS;
}
Добавлено через 3 минуты
20 и 21 строки лишние
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2014, 18:41     Даны два отрезка действительной прямой. Определить, содержится ли один из них полностью в другом.
Посмотрите здесь:

C++ Даны два массива из n целых чисел каждый. Определить, в каком из них больше положительных элементов.
C++ Даны два натуральных числа. Выяснить в каком из них больше цифр
Даны два числа. Вывести наибольшее из них с использованием функций C++
Даны шесть различных чисел. Определить максимальное из них C++
Определить, содержится ли один из них полностью в другом C++
C++ Даны два натуральных числа. Выяснить, в каком из них сумма цифр больше.
C++ Определить лежит ли один треугольник в другом
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cooller
564 / 532 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
23.01.2014, 18:53     Даны два отрезка действительной прямой. Определить, содержится ли один из них полностью в другом. #2
mmeexx, Насколько я понял, ты не правильно понимаешь что значит содержится ли отрезок в другом отрезке

Добавлено через 1 минуту
mmeexx, И сама концепция программы не верная
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
23.01.2014, 19:30     Даны два отрезка действительной прямой. Определить, содержится ли один из них полностью в другом. #3
C++
1
if ((((x1<=x2)&&(y1>=y2))||((x1>=x2)&&(y1<=y2)))&&(!((x1==x2)&&(y1==y2))))
HighPredator
5428 / 1811 / 332
Регистрация: 10.12.2010
Сообщений: 5,360
Записей в блоге: 3
23.01.2014, 19:59     Даны два отрезка действительной прямой. Определить, содержится ли один из них полностью в другом. #4
Раз даны два отрезка, значит должно быть четыре точки. Два начала, два конца.
Alex5
1017 / 680 / 99
Регистрация: 12.04.2010
Сообщений: 1,715
23.01.2014, 20:32     Даны два отрезка действительной прямой. Определить, содержится ли один из них полностью в другом. #5
По-видимому, если известно, какая точка является правым концом отрезка, какая - левым, то будет проще написать условие.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if( x1 > y1 )
{
    // поменяем местами x1 и y1 
}
if( x2 > y2 )
{
    // поменяем местами x2 и y2 
}
if(  x1 <= x2  &&  x2 <= y1   // точка x2 внутри [ x1, y1 ]  
    &&  x1 <= y2  &&  y2 <= y1   // точка y2 внутри [ x1, y1 ]
  ) 
{
    // отрезок [x2, y2]  внутри [ x1, y1 ]  
}
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
23.01.2014, 20:43     Даны два отрезка действительной прямой. Определить, содержится ли один из них полностью в другом. #6
Цитата Сообщение от HighPredator Посмотреть сообщение
Раз даны два отрезка, значит должно быть четыре точки.
Ау него 8?

Добавлено через 1 минуту
Цитата Сообщение от Alex5 Посмотреть сообщение
По-видимому, если известно, какая точка является правым концом отрезка, какая - левым, то будет проще написать условие.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if( x1 > y1 )
{
    // поменяем местами x1 и y1 
}
if( x2 > y2 )
{
    // поменяем местами x2 и y2 
}
if( x1 <= x2 && x2 <= y1  // точка x2 внутри [ x1, y1 ] *
    && x1 <= y2 && y2 <= y1  // точка y2 внутри [ x1, y1 ]
    ) 
{
    // отрезок [x2, y2] *внутри [ x1, y1 ] *
}
Ога. Давайте перемешаем все точки и гарантируем вхождение.
HighPredator
23.01.2014, 21:24
  #7

Не по теме:

Цитата Сообщение от taras atavin Посмотреть сообщение
Ау него 8?
Очень интеллектуально... Прям слов нет.

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2014, 23:18     Даны два отрезка действительной прямой. Определить, содержится ли один из них полностью в другом.
Еще ссылки по теме:

C++ Даны четыре разных числа. Найти среди них два наибольших
C++ Даны числа a, b, c. Определить, сколько из них одинаковых
Даны два отрезка действительной прямой. Определить, пересекаются ли они C++
C++ Даны два числа. Вывести большее из них
Даны четыре разных числа. Найти среди них два наибольших C++

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

Или воспользуйтесь поиском по форуму:
Alex5
1017 / 680 / 99
Регистрация: 12.04.2010
Сообщений: 1,715
23.01.2014, 23:18     Даны два отрезка действительной прямой. Определить, содержится ли один из них полностью в другом. #8

Не по теме:

Цитата Сообщение от taras atavin Посмотреть сообщение
Ога. Давайте перемешаем все точки и гарантируем вхождение.
А что, отрезок x1 = 5, y1 = 17 не совпадает с отрезком x1 = 17, y1 = 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
float x1 , x2, y1,y2;
cout<<"Enter the coordinates of the segments:\n";
cout<<"first segment:\n";
cout<<"x=";
cin>>x1;
cout<<"y=";
cin>>y1;
cout<<"Second segment:\n";
cout<<"x=";
cin>>x2;
cout<<"y=";
cin>>y2;
 
if( x1 > y1 )
{
    // поменяем местами x1 и y1 
    double tmp = x1;   x1 = y1;  y1 = tmp;
}
if( x2 > y2 )
{
    // поменяем местами x2 и y2 
    double tmp = x2;   x2 = y2;  y2 = tmp;
}
if(  x1 <= x2  &&  x2 <= y1   // точка x2 внутри [ x1, y1 ]  
    &&  x1 <= y2  &&  y2 <= y1   // точка y2 внутри [ x1, y1 ]
  ) 
{
    // отрезок [x2, y2]  внутри [ x1, y1 ]  
    cout << "\n the 2nd segment is inside the 1st one \n";
}
Миниатюры
Даны два отрезка действительной прямой. Определить, содержится ли один из них полностью в другом.  
Yandex
Объявления
23.01.2014, 23:18     Даны два отрезка действительной прямой. Определить, содержится ли один из них полностью в другом.
Ответ Создать тему
Опции темы

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