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

Алгоритм сортировки в файле - C++

Восстановить пароль Регистрация
 
nedsi
2 / 2 / 0
Регистрация: 18.09.2013
Сообщений: 65
06.11.2013, 23:15     Алгоритм сортировки в файле #1
Никак не могу придумать как отсортировать массив значений. Есть файл, в котором находятся данные типа (вершины прямоугольник) :
20 20 69 70
40 170 150 200
.....................
Есть функция GetArea():
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int Rect::GetArea()
{
    int x1,x2,x3,x4,x5,x6,x7,x8,area;
    x1 = ItsUpperLeftGetX();
    x2 = ItsUpperLeftGetY();
    x7 = ItsLowerRightGetX();
    x8 = ItsLowerRightGetY();
    x3 = x7;
    x4 = x2;
    x5 = x1;
    x6 = x8;
    area =  (x3 - x1) * (x6-x2);
    return area;
}
Как организовать сортировку по спаданию площади? Начал писать функцию-член, но что-то застрял...
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
void Rect::Sort(char path[])
{
    Rect *MyRect = new Rect [10];
    int i = 0,x1,x2,x3,x4;
    char buff[5];
    ifstream file(path);
    if (!file) exit(1);
    else 
        while (true)
        {
            if (file.eof()) break;
            file>>buff;
            x1 = atoi(buff);
            file>>buff;
            x2 = atoi(buff);
            file>>buff;
            x3 = atoi(buff);
            file>>buff;
            x4 = atoi(buff);
            MyRect[i] = Rect(x1,x2,x3,x4);
            if (i==10) break;
            i++;
        }
        for ( i =0; i<10; i++)
        {
            for (int j =0; j<10; j++)
            {
                if ((MyRect[i].GetArea()>MyRect[i+1].GetArea()) && (i<9))
                {
                    
 
                }
            }
        }
    delete [] MyRect;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2013, 23:15     Алгоритм сортировки в файле
Посмотрите здесь:

C++ Алгоритм сортировки
C++ Метод сортировки в файле
Алгоритм квадратичной сортировки C++
C++ Алгоритм сортировки
C++ Алгоритм сортировки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
06.11.2013, 23:17     Алгоритм сортировки в файле #2
Цитата Сообщение от nedsi Посмотреть сообщение
данные типа (вершины прямоугольник) :
20 20 69 70
40 170 150 200
я не ошень понел что это такие за вершины...
nedsi
2 / 2 / 0
Регистрация: 18.09.2013
Сообщений: 65
06.11.2013, 23:22  [ТС]     Алгоритм сортировки в файле #3
Цитата Сообщение от dzrkot Посмотреть сообщение
я не ошень понел что это такие за вершины...
Верхняя левая точка, нижняя правая

Добавлено через 1 минуту
Цитата Сообщение от dzrkot Посмотреть сообщение
я не ошень понел что это такие за вершины...
10 10 50 50 (10 - UpperX, 10 - UpperY, 50-LowerX, 50 - LowerY)
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
06.11.2013, 23:22     Алгоритм сортировки в файле #4
Цитата Сообщение от nedsi Посмотреть сообщение
Верхняя левая точка, нижняя правая
так что здесь что? я к координатам как-то привык..
nedsi
2 / 2 / 0
Регистрация: 18.09.2013
Сообщений: 65
06.11.2013, 23:24  [ТС]     Алгоритм сортировки в файле #5
Цитата Сообщение от dzrkot Посмотреть сообщение
так что здесь что? я к координатам как-то привык..
Это и есть координаты. Одна строчка = один прямоугольник, выше описал
FreeMan108
 Аватар для FreeMan108
120 / 120 / 6
Регистрация: 04.03.2013
Сообщений: 368
06.11.2013, 23:29     Алгоритм сортировки в файле #6
Цитата Сообщение от nedsi Посмотреть сообщение
file>>buff; x1 = atoi(buff);
И кто вас такому учит?

C++
1
2
int x1, y1, x2, y2;
file >> x1 >> y1 >> x2 >> y2;
Получили вершины. Далее считаем площадь.
C++
1
int S = (x2 - x1)*(y2 - y1);
Вбиваем это все дело в массив Array.
А потом сортируем.

C++
1
2
3
4
5
6
7
8
for (int i = 0; i < 10; i++)
   for (int j = 0; j < 9; j++)
       if (Array[j] > Array [j+1])
        {
            int temp = A[j];
            A[j] = A[j+1];
            A[j+1] = temp;
               }
nedsi
2 / 2 / 0
Регистрация: 18.09.2013
Сообщений: 65
06.11.2013, 23:31  [ТС]     Алгоритм сортировки в файле #7
Цитата Сообщение от FreeMan108 Посмотреть сообщение
И кто вас такому учит?
Сам учусь. Дело в том, что мне нужно отсортировать не площади, а координаты вершин по площади (простите не уточнил сразу)
FreeMan108
 Аватар для FreeMan108
120 / 120 / 6
Регистрация: 04.03.2013
Сообщений: 368
06.11.2013, 23:49     Алгоритм сортировки в файле #8
Ну тогда тут удобнее через структуры.

C++
1
2
3
4
5
6
MY_RECT {
int x1;
int y1;
int x2;
int y2;
};
Читаем данные

C++
1
2
3
4
5
6
7
8
9
MY_RECT mr[10];
for (int i = 0; i < 10; i++)
{
file >> x1 >> y1 >> x2 >> y2;
mr[i].x1 = x1;
mr[i].y1 = y1;
mr[i].x2 = x2;
mr[i].y2 = y2;
}
Дальше сортируем по площади

C++
1
2
3
4
5
6
7
8
for (int i = 0; i < 10; i++)
   for (int j = 0; j < 9; j++)
      if (GetArea(&mr[j]) > GetArea(&mr[j+1]) )
        {
             MY_RECT temp = mr[j];
             mr[j] = mr[j+1];
             mr[j+1] = temp;
             }
Добавлено через 3 минуты
Вот функция
C++
1
2
3
4
inline int GetArea (MY_RECT* mr)
{
     return (mr->x2 - mr->x1)*(mr->y2 - mr->y1);
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2013, 23:55     Алгоритм сортировки в файле
Еще ссылки по теме:

Алгоритм пузырьковой сортировки C++
Реализовать алгоритм сортировки C++
Алгоритм сортировки C++

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

Или воспользуйтесь поиском по форуму:
nedsi
2 / 2 / 0
Регистрация: 18.09.2013
Сообщений: 65
06.11.2013, 23:55  [ТС]     Алгоритм сортировки в файле #9
Спасибо!
Yandex
Объявления
06.11.2013, 23:55     Алгоритм сортировки в файле
Ответ Создать тему
Опции темы

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