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

Числовые прямые (имеется ли у отрезков общая часть не нулевой длинны?) - C++

Восстановить пароль Регистрация
 
Lester
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 5
13.01.2013, 17:42     Числовые прямые (имеется ли у отрезков общая часть не нулевой длинны?) #1
Здравствуйте! Помогите пожалуйста решить задачу. Сижу, карпею над учебниками, но боюсь что к завтрашнему мне не осилить. Очень надеюсь на вашу помощь форумчане.
Задача:
На вещественной числовой оси заданы два отрезка /a1, b1/ и /а2, b2/. Составить программу, которая вводит исходные данные, и определяет имеется ли у этих отрезков общая часть не нулевой длинны.
Примечание: в исходных данных концы отрезков могут быть заданы в произвольном порядке. Например один отрезок может задаваться как [4,3] так и [3,4].
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2013, 17:42     Числовые прямые (имеется ли у отрезков общая часть не нулевой длинны?)
Посмотрите здесь:

Определить пересекаются две прямые, параллельны или совпадают.Две прямые заданы уравнениями: ax+by+c=0, px+qy+r=0 C++
C++ помогите пожалуйста задать прямые с помощью структур прямые задаются точкой и направляющим вектором. дальше как делать знаю
В целочисленном массиве имеется единственный нулевой элемент, разделяющий его на две части. В частном случае любой из подмассивов может быть пустым C++
C++ Две прямые описываются уравнениями напечатать координаты точки пересечения этих прямых, либо сообщить что эти прямые совпада
C++ На прямой своими концами заданы N отрезков. Найти точку принадлежащую максимальному числу отрезков
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vxg
Модератор
 Аватар для vxg
2669 / 1680 / 158
Регистрация: 13.01.2012
Сообщений: 6,283
13.01.2013, 18:39     Числовые прямые (имеется ли у отрезков общая часть не нулевой длинны?) #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
#include <iostream>
int main(void)
{
    double a1, b1, a2, b2;
 
    std::cout << "a1: ";
    std::cin >> a1;
 
    std::cout << "b1: ";
    std::cin >> b1;
 
    std::cout << "a2: ";
    std::cin >> a2;
 
    std::cout << "b2: ";
    std::cin >> b2;
 
    double _a1, _b1, _a2, _b2;
 
    if (a1 > b1)
    {
        _a1 = b1;
        _b1 = a1;
    }
    else
    {
        _a1 = a1;
        _b1 = b1;
    }
 
    if (a2 > b2)
    {
        _a2 = b2;
        _b2 = a2;
    }
    else
    {
        _a2 = a2;
        _b2 = b2;
    }
 
    double a, b;
 
    a = _a2 > _a1? _a2 : _a1;
    b = _b2 < _b1? _b2 : _b1;
 
    if (a > b) std::cout << "no" << std::endl;
    else std::cout << "yes: " << a << ", " << b << std::endl;
 
    return 0;
}
Lester
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 5
14.01.2013, 12:02  [ТС]     Числовые прямые (имеется ли у отрезков общая часть не нулевой длинны?) #3
Цитата Сообщение от vxg Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
    double a, b;
 
    a = _a2 > _a1? _a2 : _a1;
    b = _b2 < _b1? _b2 : _b1;
 
    if (a > b) std::cout << "no" << std::endl;
    else std::cout << "yes: " << a << ", " << b << std::endl;
 
    return 0;
}
программа будет работать некорректно. Что если один отрезок вложен в другой? Тернарная операция отражает не все случаи. А вот как сделать правильно что-то не допру никак. (((
vxg
Модератор
 Аватар для vxg
2669 / 1680 / 158
Регистрация: 13.01.2012
Сообщений: 6,283
14.01.2013, 12:08     Числовые прямые (имеется ли у отрезков общая часть не нулевой длинны?) #4
укажите a1 b1 a2 b2 при которых программа дает неверный результат
Lester
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 5
14.01.2013, 13:06  [ТС]     Числовые прямые (имеется ли у отрезков общая часть не нулевой длинны?) #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
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
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <clocale>
#include <map>
#include <string>
 
using namespace std;
 
int main ()
{
    setlocale(LC_ALL, "rus");
    cout << "Программа нахождения общей части отрезков" << endl;
 
    float n1 = 0, 
          n2 = 0,
          m1 = 0,
          m2 = 0,
          N,
          K;
    cout << "Первый интервал: " << endl;
    do 
    {
    cin >> n1;
    cin >> n2;
        if (n1 == n2)
            cout << "Введён нулевой отрезок. Повторите ввод!" << endl;
    }  while (n1 == n2);
 
        if (n1 > n2)
            {
            n2 = n1 + n2;
            n1 = n2 - n1;
            n2 = n2 - n1;
            }
            cout << "["<< n1 << "," << n2 << "]" << endl;
 
    cout << "Второй интервал: " << endl;
    do 
    {
    cin >> m1;
    cin >> m2;
        if (m1 == m2)
            cout << "Введён нулевой отрезок. Повторите ввод!" << endl;
    }  while (m1 == m2);
 
            if (m1 > m2)
            {
                m2 = m1 + m2;
                m1 = m2 - m1;
                m2 = m2 - m1;
            }
            cout << "["<< m1 << "," << m2 << "]" << endl;
 
    N = m1 < n2? m1 : 0;
    N = m1 <=n1? n1 : m1;
    K = m2 < n2? m2 : n2;
 
    if (N == K || n2 <= m1 || n1 >= m2|| m2 <= n1 || m1 >= n2 ||N == 0 )
         cout << "отрезки не имеют общей части." << endl;
    else cout << "общий отрезок: " << "[" << N << "," << K << "]" << endl;
        
 
    system ("pause >> VOID"); // ВПРАВО!
    return 0;
}
vxg
Модератор
 Аватар для vxg
2669 / 1680 / 158
Регистрация: 13.01.2012
Сообщений: 6,283
14.01.2013, 13:11     Числовые прямые (имеется ли у отрезков общая часть не нулевой длинны?) #6
и все-таки если не сложно укажите a1 b1 a2 b2 при которых предыдущий вариант программы дает неверный результат

Добавлено через 18 секунд
...или при котором вам показалось что он дает неверный результат
Lester
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 5
14.01.2013, 14:59  [ТС]     Числовые прямые (имеется ли у отрезков общая часть не нулевой длинны?) #7
Цитата Сообщение от vxg Посмотреть сообщение
и все-таки если не сложно укажите a1 b1 a2 b2 при которых предыдущий вариант программы дает неверный результат

Добавлено через 18 секунд
...или при котором вам показалось что он дает неверный результат
если один отрезок вложен в другой
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2013, 15:02     Числовые прямые (имеется ли у отрезков общая часть не нулевой длинны?)
Еще ссылки по теме:

GCC как часть библиотек линковать статически, а часть динамически? C++
C++ Есть ли возможность в char-массив часть данных ввести в буквах, а часть в цифрах?
Разделить дробное число на 2 части: целая часть числа и его дробная часть C++

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

Или воспользуйтесь поиском по форуму:
vxg
Модератор
 Аватар для vxg
2669 / 1680 / 158
Регистрация: 13.01.2012
Сообщений: 6,283
14.01.2013, 15:02     Числовые прямые (имеется ли у отрезков общая часть не нулевой длинны?) #8
все выводит. дайте конкретные значения на которых у вас затык
http://codepad.org/5yU5FOKw
Yandex
Объявления
14.01.2013, 15:02     Числовые прямые (имеется ли у отрезков общая часть не нулевой длинны?)
Ответ Создать тему
Опции темы

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