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

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

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

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

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

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

Конструктор копирования и оператор присваивания - общая часть, выделять ли в отдельный метод - C++
Как лучше? // конструктор копирования Fraction::Fraction( const Fraction& rhs ) { // инициализируем данными параметра функции и...

В целочисленном массиве имеется единственный нулевой элемент, разделяющий его на две части. В частном случае любой из подмассивов может быть пустым - C++
В целочисленном массиве имеется единственный нулевой элемент, разделяющий его на две части. В частном случае любой из подмассивов может...

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

Две прямые описываются уравнениями напечатать координаты точки пересечения этих прямых, либо сообщить что эти прямые совпада - C++
Две прямые описываются уравнениями а1x+b1y+c1=0 a2x+b2y+c2=0 напечатать координаты точки пересечения этих прямых, либо сообщить что...

Определить пересекаются две прямые, параллельны или совпадают.Две прямые заданы уравнениями: ax+by+c=0, px+qy+r=0 - C++
Определить пересекаются две прямые, параллельны или совпадают. Две прямые заданы уравнениями: ax+by+c=0, px+qy+r=0

На прямой своими концами заданы N отрезков. Найти точку принадлежащую максимальному числу отрезков - C++
Помогите пожалуйста понять, что от меня хотят и какой(как) разработать алгоритм для решения этой задачи. На прямой своими концами...

Есть ли у кого похожий алгоритм: распределения отрезков разной длины внутри отрезков фиксированной длины? - C++
Народ помогите мне с программой распределения отрезков разной длины внутри отрезков фиксированной длины с минимальными остатками. К...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vxg
Модератор
3120 / 1922 / 209
Регистрация: 13.01.2012
Сообщений: 7,364
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
Модератор
3120 / 1922 / 209
Регистрация: 13.01.2012
Сообщений: 7,364
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
Модератор
3120 / 1922 / 209
Регистрация: 13.01.2012
Сообщений: 7,364
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     Числовые прямые (имеется ли у отрезков общая часть не нулевой длинны?)
Еще ссылки по теме:

Есть ли возможность в char-массив часть данных ввести в буквах, а часть в цифрах? - C++
подскажите пожалуйста, есть ли возможность в char массив часть данных ввести в буквах, а часть в цифрах (или в любой другой массив вбить...

Ошибка в задаче: Найти мин. k, которое будет удовлетворять условию: fabs(правая часть - левая часть) < 10^(-15) - C++
Задача: k изменяется от 0 до бесконечности ((4k+1)! / ^2) * x^2k = =1/2* X принадлежит интервалу (-1/4 ; 1/4) Найти мин....

Инициализация массива длинны N - C++
Требуется задать массив с Энным количеством членов, n вводится с клавиатуры. При попытке создания массива ... int n; ...

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

Создание массива динамической длинны - C++
Раньше писал на C# а сейчас вот нужно на плюсах написать небольшую задачку, не могу создать массив определенной длинны.... короче *ret...


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

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

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