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

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

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

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

13.01.2013, 17:42. Просмотров 733. Ответов 7
Метки нет (Все метки)

Здравствуйте! Помогите пожалуйста решить задачу. Сижу, карпею над учебниками, но боюсь что к завтрашнему мне не осилить. Очень надеюсь на вашу помощь форумчане.
Задача:
На вещественной числовой оси заданы два отрезка /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++ помогите пожалуйста задать прямые с помощью структур прямые задаются точкой и направляющим вектором. дальше как делать знаю
Ошибка в задаче: Найти мин. k, которое будет удовлетворять условию: fabs(правая часть - левая часть) < 10^(-15) C++
В целочисленном массиве имеется единственный нулевой элемент, разделяющий его на две части. В частном случае любой из подмассивов может быть пустым C++
Инициализация массива длинны N C++
C++ Две прямые описываются уравнениями напечатать координаты точки пересечения этих прямых, либо сообщить что эти прямые совпада
C++ На прямой своими концами заданы N отрезков. Найти точку принадлежащую максимальному числу отрезков
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vxg
Модератор
 Аватар для vxg
2857 / 1790 / 181
Регистрация: 13.01.2012
Сообщений: 6,755
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
2857 / 1790 / 181
Регистрация: 13.01.2012
Сообщений: 6,755
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
2857 / 1790 / 181
Регистрация: 13.01.2012
Сообщений: 6,755
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++
C++ Есть ли у кого похожий алгоритм: распределения отрезков разной длины внутри отрезков фиксированной длины?
C++ Создание массива динамической длинны

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

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

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