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

На прямой своими концами заданы N отрезков. Найти точку принадлежащую максимальному числу отрезков - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ GUIwin32 вылезает консоль http://www.cyberforum.ru/cpp-beginners/thread1008428.html
Вообщем создаю в моём Code Blocks проект GUIwin32 , автоматом генерируется пример с окном, но при запуске проги вылезает ещё и консольное окно, как его убрать, если это возможно? Или в Code Blocks...
C++ Сортировка по алфавиту Доброго времени суток. Имеется задача: Описать структуру с именем ORDER, содержащую следующие поля: *расчетный счет плательщика *расчетный счет получателя *перечисляемая сумма в рублях... http://www.cyberforum.ru/cpp-beginners/thread1008420.html
C++ Дешифрование
У Страуструпа есть такие упражнения 11. (*2) Напишите шифрующую программу, которая читает символы из cin и пишет их в cout в зашифрованном виде. Можно использовать следующий простой...
C++ Как сравнить строки?
Бобрый день. Подскажите пжалста, как можно сравнить строки без учета регистра (шобы самому не писать функцию перевода в нижний регистр). надо сравнить две строковых переменные без учета регистра:...
C++ No operator found which takes a right-hand operand http://www.cyberforum.ru/cpp-beginners/thread1008409.html
Кто подскажет в чем ошибка? #include <iostream> #include <vector> class LongNumber { public:
C++ Найти количество элементов массива вещественных чисел, дробная часть которых равна 0,5 Найти количество элементов массива вещественных чисел, дробная часть которых равна 0,5 подробнее

Показать сообщение отдельно
viktorius
2 / 2 / 2
Регистрация: 24.02.2013
Сообщений: 105
16.11.2013, 10:39
я сделал так:

a.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
using namespace std;
//вывести координаты точки наибольшего пересечения отрезков,
//число пересечения и 
//отрезок в этой точке с которым пересекается больше всего отрезков
class Point  
{
    int **segment, n, *arr, count, min, max;
public:
    Point();
    Point(int [][2], int);
    ~Point();
    void Search();
};
a.cpp
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
67
68
69
70
71
72
73
#include <iostream>
#include "a.h"
using namespace std;
 
Point::Point() : segment(0), n(0), count(0), arr(0), min(0), max(0)
{}
 
Point::Point(int mas[][2], int N) : n(N)
{
    segment = new int*[n];
    max = INT_MIN;
    min = INT_MAX;
    for(int i = 0; i < n; i++)
    {
        segment[i] = new int[2];
        for(int j = 0; j < 2; j++)
        {
            segment[i][j] = mas[i][j];
            if(segment[i][j] > max)
                max = segment[i][j];
            else if(segment[i][j] < min)
                min = segment[i][j];
        }
    }
    if(max > 0 && min >= 0)
        count = max - min;
    else if(max > 0 && min < 0)
        count = max + abs(min);
    else if(max <= 0 && min < 0)
        count = abs(min) - abs(max);
    arr = new int[++count];
    for(int i = 0; i < count; i++)
        arr[i] = 0;
}
 
Point::~Point()
{
    for(int i = 0; i < n; i++)
        delete [] segment[i];
    delete [] segment;
    delete [] arr;
}
 
void Point::Search()
{
    for(int i = 0; i < count; i++)
        for(int j = 0; j < n; j++)
            if(segment[j][0] <= (min + i) && segment[j][1] >= (min + i))
                ++arr[i];
    int Max= INT_MIN, cor;
    for(int i = 0; i < count; i++)
        if(arr[i] > Max)
        {
            Max = arr[i];
            cor = min + i;
        }
    cout<<cor<<" "<<Max<<endl;
    int *zn = new int[n], t = 0;
    for(int i = 0; i < n; i++)
        zn[i] = 0;
    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++)
            if(i != j && segment[i][0] <= (cor) && segment[i][1] >= (cor) && segment[j][0] <= (cor) && segment[j][1] >= (cor))
                zn[i]++;
    for(int i = 0, m = 0; i < n; i++)
        if(zn[i] > m)
        {
            m = zn[i];
            t = i;
        }
    cout<<"["<<segment[t][0]<<","<<segment[t][1]<<"]"<<endl;
    delete [] zn;
}
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include "a.h"
using namespace std;
 
int main()
{
    int a[8][2] = {-5, 8, -1, 4, 2, 5, 3, 7, 7, 9, 9, 12, 10, 11, 9, 12};
    Point ob(a, 8);
    ob.Search();
    system("pause");
    return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru