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

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

Войти
Регистрация
Восстановить пароль
 
nedsi
2 / 2 / 0
Регистрация: 18.09.2013
Сообщений: 65
#1

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

06.11.2013, 23:15. Просмотров 257. Ответов 8
Метки нет (Все метки)

Никак не могу придумать как отсортировать массив значений. Есть файл, в котором находятся данные типа (вершины прямоугольник) :
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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2013, 23:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Алгоритм сортировки в файле (C++):

Метод сортировки в файле - C++
Значит так,помогите сделать такое : есть файл(*.txt) в середине есть 1000 строчек (допустим цифри ,int) так вод надо не считивая все...

Алгоритм сортировки - C++
Дан одномерный масив. мне в нем нужно отсортировать по возростанию только те числа масива которые простые, а остальные оставить на той...

Алгоритм сортировки - C++
пацаны ребята помогите, реализовал два алгоритма на C++, алгоритм сортировки пирамидальный(кучей) и быстрой сортировки, все они сортируют...

Алгоритм сортировки - C++
Здравствуйте, подскажите пожалуйста какой алгоритм можно использовать при решении такой задачи: Дана строка char * из букв и цифр...

Алгоритм сортировки - C++
учитель попросил написать сортировку массива по возрастанию в общем виде #include &lt;stdio.h&gt; #include &lt;string.h&gt; int main() { ...

Алгоритм пузырьковой сортировки - C++
#include&lt;iostream.h&gt; #define SIZE 5 void bsort (int iArray, int n); int main() { char ch; int ii; int iArray ; for(ii =...

8
dzrkot
zzzZZZ...
523 / 353 / 54
Регистрация: 11.09.2013
Сообщений: 2,025
06.11.2013, 23:17 #2
Цитата Сообщение от nedsi Посмотреть сообщение
данные типа (вершины прямоугольник) :
20 20 69 70
40 170 150 200
я не ошень понел что это такие за вершины...
0
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)
0
dzrkot
zzzZZZ...
523 / 353 / 54
Регистрация: 11.09.2013
Сообщений: 2,025
06.11.2013, 23:22 #4
Цитата Сообщение от nedsi Посмотреть сообщение
Верхняя левая точка, нижняя правая
так что здесь что? я к координатам как-то привык..
0
nedsi
2 / 2 / 0
Регистрация: 18.09.2013
Сообщений: 65
06.11.2013, 23:24  [ТС] #5
Цитата Сообщение от dzrkot Посмотреть сообщение
так что здесь что? я к координатам как-то привык..
Это и есть координаты. Одна строчка = один прямоугольник, выше описал
0
FreeMan108
121 / 121 / 6
Регистрация: 04.03.2013
Сообщений: 370
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;
               }
0
nedsi
2 / 2 / 0
Регистрация: 18.09.2013
Сообщений: 65
06.11.2013, 23:31  [ТС] #7
Цитата Сообщение от FreeMan108 Посмотреть сообщение
И кто вас такому учит?
Сам учусь. Дело в том, что мне нужно отсортировать не площади, а координаты вершин по площади (простите не уточнил сразу)
0
FreeMan108
121 / 121 / 6
Регистрация: 04.03.2013
Сообщений: 370
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);
}
1
nedsi
2 / 2 / 0
Регистрация: 18.09.2013
Сообщений: 65
06.11.2013, 23:55  [ТС] #9
Спасибо!
0
06.11.2013, 23:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2013, 23:55
Привет! Вот еще темы с ответами:

Алгоритм сортировки Шелла - C++
http://lord-n.narod.ru/download/books/walla/programming/Spr_po_C/21/2107.htm здесь сказано, что существует, некая последовательность...

Комбинированый алгоритм сортировки - C++
Нужно написать програму на языке С когда имеется алгоритм ! Задача в слудуещем: сортировка масива с N- разных чисел, используя не более N+2...

Алгоритм сортировки вставками - C++
Привет, всем! В алгоритме непонятна одна строчка: #include&lt;iostream&gt; #include&lt;cstdlib&gt; using namespace std; int...

Алгоритм сортировки,ошибка! - C++
У меня алгоритм сортировки вставками но вот только не сортирует почему то #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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