Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 18.03.2016
Сообщений: 82
1

Проверить является ли интервалом объединение нескольких интервалов

28.03.2016, 21:00. Показов 2625. Ответов 6

Author24 — интернет-сервис помощи студентам
Delphi
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
type otr=record//тип интервал
         nc,kn:integer;//начало, конец
         end;
var a:array[1..100] of otr;//массив интервалов
    n,i,j:integer;
    x:otr;//буфер для сортировки
begin
clrscr;
write('Количество интервалов n=');
readln(n);
writeln('Введите границы ',n,' интервалов:');
for i:=1 to n do
 begin
  writeln(' Интервал ',i);
  write('  начало=');readln(a[i].nc);
  write('  конец=');readln(a[i].kn);
 end;
clrscr;
writeln('Интервалы:');
for i:=1 to n do
write('[',a[i].nc,',',a[i].kn,']  ');
writeln;
writeln;
for i:=1 to n-1 do//сортируем по возрастанию начала интервалов
for j:=i+1 to n do
if a[i].nc>a[j].nc then
 begin
  x:=a[i];
  a[i]:=a[j];
  a[j]:=x;
 end;
writeln('Интервалы по возрастанию начала:');
for i:=1 to n do
write('[',a[i].nc,',',a[i].kn,']  ');
writeln;
writeln;
for i:=2 to n do//ищем разрывы
if a[i].nc>a[i-1].kn then//ннашли, сообщаем и завершаем программу
 begin
  writeln('Эти интервалы не образуют общий интервал!');
  readln;
  exit;
 end;
writeln('Эти интервалы образуют общий интервал.');
write('начало=',a[1].nc,'  конец=',a[n].kn);//начало и конец общего интервала
readln
end.
Люди добрые. Убей бог, не знаю Delphi...Помогите пожалуйста перевести программу.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.03.2016, 21:00
Ответы с готовыми решениями:

Является ли интервалом объединение заданных интервалов?

Определить является ли интервалом числовой оси объединение заданных интервалов
Помогите написать программу: Даны действительные числа a1, a2, ... , a2n. Эти точки определяют n...

Является ли интервалом объединение интервалов?
Пусть даны вещественные числа a1, a2, …, a2n. Эти точки определяют n интервалов числовой оси (a1,...

Является ли интервалом объединение интервалов
2. Даны действительные числа a1, a2, ... , a2n. Эти точки определяют n интервалов числовой оси (a1,...

6
1 / 1 / 0
Регистрация: 18.03.2016
Сообщений: 82
28.03.2016, 21:35  [ТС] 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
#include "stdafx.h"
#include <iostream>
 
using namespace std;
int main()
{
    setlocale(LC_ALL, "RUS");
    int n;
    int *a = new int[255];
    int *b = new int[255];
    cout << "Введите кол-во чисел: " << endl;
    cin >> n;
    cout << "Введите левый ряд чисел: " << endl;
    for (int i = 0; i < n; i++)
        cin >> a[i];
    cout << "Введите второй ряд чисел: " << endl;
    for (int i = 0; i < n; i++)
        cin >> b[i];
    for (int i = n - 1; i >= 0; i--)
    {
        for (int j = 0; j < i; j++)
        {
            if (a[j] > a[j + 1])
            {
                int tmp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = tmp;
            }
        }
    }
    for (int i = n - 1; i >= 0; i--)
    {
        for (int j = 0; j < i; j++)
        {
            if (b[j] > b[j + 1])
            {
                int tmp = b[j];
                b[j] = b[j + 1];
                b[j + 1] = tmp;
            }
        }
    }
Вот задание:
Даны действительные числа a1, a2, ... , a2n. Эти точки определяют n интервалов числовой оси (a1, a2), (a3, a4), ..., (a2n-1, a2n). Является ли интервалом объединение этих интервалов? Если да, то указать концы этого интервала.
Подскажите, как мне реализовать следующее:
Если (предположим, что мы взяли 2 числа) a2<a3, тогда получается, что между ними есть пробел, в противном случае - нет пробела.
0
6 / 6 / 4
Регистрация: 29.10.2015
Сообщений: 45
28.03.2016, 21:52 3
Не совсем понял вопрос...А в первой части вы сортируете a и b по возрастанию с какой целью?
0
1 / 1 / 0
Регистрация: 18.03.2016
Сообщений: 82
28.03.2016, 21:56  [ТС] 4
bizba, ну мне нужно сравнить два массива так, чтобы a[второе число]<b[первое число]
0
6 / 6 / 4
Регистрация: 29.10.2015
Сообщений: 45
28.03.2016, 22:34 5
Лучший ответ Сообщение было отмечено hostel656 как решение

Решение

первая часть магии:

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
#include <iostream>
 
using namespace std;
int main()
{
    setlocale(LC_ALL, "RUS");
 
    struct s_otr{
    int nc;
    int kn;
    };
 
    s_otr otr[100];
    int n,i,j;
    s_otr xotr;
 
    cout << "Введите кол-во чисел: ";
    cin >> n;
    cout << "Введите границы " << n <<" интервалов:" << endl;
 
    for(i=0; i<n; i++){
        cout<< "Интервал "<< i <<endl;
        cout<< "Начало=";
        cin >> otr[i].nc;
        cout<< "Конец=";
        cin >> otr[i].kn;
 
    }
    cout<<endl;
    cout<< "Интервалы: "<<endl;
    for(i=0; i<n; i++)
        cout<<"["<<otr[i].nc<<","<<otr[i].kn<<"] ";
    cout<<endl;
 
//сортируем по возрастанию начала интервалов
 
    for(i=0;i<n-2;i++){
        for(j=i+1; j<n ; j++){
            if(otr[i].nc > otr[j].nc){
                xotr = otr[i];
                otr[i]=otr[j];
                otr[j]=xotr;
            }
        }
    }
 
    cout<<endl;
    cout<< "Интервалы по возрастанию начала: "<<endl;
    for(i=0; i<n; i++)
        cout<<"["<<otr[i].nc<<","<<otr[i].kn<<"] ";
    cout<<endl;
 
 
}
Добавлено через 8 минут
и продолжение:

C++
1
2
3
4
5
6
7
8
9
10
11
12
//ищем разрывы
 
    for(i=1; i<n; i++ ){
        if(otr[i].nc > otr[i-1].kn){
            cout<< "Эти интервалы не образуют общий интервал!"<< endl;
            return 1;
        }
    }
 
    cout<<"Эти интервалы образуют общий интервал!"<< endl;
    cout<<"Начало="<< otr[0].nc << " конец="<< otr[n-1].kn<<endl;
    return 0;
1
1 / 1 / 0
Регистрация: 18.03.2016
Сообщений: 82
28.03.2016, 23:30  [ТС] 6
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
// Задача 6(2).cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <conio.h>
 
using namespace std;
struct s_otr {
    int nc;
    int kn;
};
int main()
{
    setlocale(LC_ALL, "RUS");
    s_otr otr[100];
    int n, i, j;
    s_otr xotr;
    cout << "Введите кол-во чисел: ";
    cin >> n;
    cout << "Введите границы " << n << " интервалов:" << endl;
    for (i = 0; i<n; i++) {
        cout << "Интервал " << i << endl;
        cout << "Начало=";
        cin >> otr[i].nc;
        cout << "Конец=";
        cin >> otr[i].kn;
    }
    cout << endl;
    cout << "Интервалы: " << endl;
    for (i = 0; i<n; i++)
        cout << "[" << otr[i].nc << "," << otr[i].kn << "] ";
    cout << endl;
    for (i = 0;i<n - 2;i++) {
        for (j = i + 1; j<n; j++) {
            if (otr[i].nc > otr[j].nc) {
                xotr = otr[i];
                otr[i] = otr[j];
                otr[j] = xotr;
            }
        }
    }
    cout << endl;
    cout << "Интервалы по возрастанию начала: " << endl;
    for (i = 0; i < n; i++)
        cout << "[" << otr[i].nc << "," << otr[i].kn << "] ";
        cout << endl;
        for (i = 1; i<n; i++)
        {
            if (otr[i].nc > otr[i - 1].kn)
                cout << "Эти интервалы не образуют общий интервал!" << endl;
            else
                cout << "Эти интервалы образуют общий интервал!" << endl;
        }
cout << "Начало=" << otr[0].nc << " конец=" << otr[n - 1].kn << endl;
system("pause");
return 0;
}
Собственно проблема в том, что он узнаёт, образуют ли интервалы общий интервал
Укажите, пожалуйста, на ошибку

Добавлено через 10 минут
не узнаёт*
0
90 / 84 / 42
Регистрация: 27.09.2015
Сообщений: 316
29.03.2016, 13:46 7
почему-же не узнаёт? только интервалы по порядку вводить надо, что-бы конец был правильным
Миниатюры
Проверить является ли интервалом объединение нескольких интервалов  
0
29.03.2016, 13:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.03.2016, 13:46
Помогаю со студенческими работами здесь

Является ли интервалом объединение заданных интервалов?
Даны действительные числа a1, a2, ... , a2n. Эти точки определяют n интервалов числовой оси (a1,...

Массивы в Delphi (Console): Определить, является ли интервалом объединение этих интервалов
Даны действительные числа a1, a2, ... , a2n. Эти точки определяют n интервалов числовой оси (a1,...

Проверить, является ли объединение множеств выпуклым множеством
Пусть A,B - выпуклые множества. Проверить множество A \cup B на выпуклость. По условию не даны...

Объединение интервалов
Здравствуйте! Подскажите, плиз, как объединить интервала для таблицы на SQL? В таблице имеются...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru