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

Не работает функция сортировки - C++

Восстановить пароль Регистрация
 
nedsi
2 / 2 / 0
Регистрация: 18.09.2013
Сообщений: 65
07.11.2013, 19:40     Не работает функция сортировки #1
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
void Sort(char path[])
{
    Rect *MyRect = new Rect [100]; //дин массив
    Rect temp;                  //буффер
    int k = 0,x1,y1,x2,y2;      //вершины прямоугольника
    char buff[5];               //буфер для чтения вершин с файла
    fstream file(path);         //открытие для чтения
    if (!file) exit(1);         //если не открылся файл  - > безопасный выход
    else 
        while (true)
        {
            if (file.eof()) break; //проверка на открытие
            file>>buff;             //сичтал первый элемент
            x1 = atoi(buff);        //перевел в int
            file>>buff;
            y1 = atoi(buff);
            file>>buff;
            x2 = atoi(buff);
            file>>buff;
            y2 = atoi(buff);
            MyRect[k] = Rect(x1,y1,x2,y2); // вызов конструктора для k-го элемента массива
            k++;
        }
        for ( int i =0; i<k; i++) 
        {
            for (int j = 0; j<k-1; j++)
            {
                if (MyRect[j].GetArea()<MyRect[j+1].GetArea()) //сортирую элементы по упаданию площади
                {
                    temp = MyRect[j];
                    MyRect[j] = MyRect[j+1];
                    MyRect[j+1] = temp;
 
                }
            }
        }
    int i = 1;
    delete [] MyRect; // освобождение памяти
    file.close(); // закрытие файла
    fstream f(path,ios::trunc); // ios::trunk насколько я понял, удаляет существовавший файл и создает новый
    while (true)
    {
        if (k == 0) break;
        f<<MyRect[i].ItsUpperLeftGetX(); // запись в файл
        f<<" "<<MyRect[i].ItsUpperLeftGetY();
        f<<" "<<MyRect[i].ItsLowerRightGetX();
        f<<" "<<MyRect[i].ItsLowerRightGetY()<<"\n";
        k--;
        i++;
    }
    f.close();
}
Реакции 0! Вызываю так:
C++
1
Sort("E:\\data.txt");
В чем проблема? Благодарю.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2013, 19:40     Не работает функция сортировки
Посмотрите здесь:

C++ Функция сортировки и поиска
C++ Функция сортировки матрицы
Функция сортировки C++
функция сортировки двумерного массива C++
C++ Функция сортировки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mat_for_c
 Аватар для mat_for_c
115 / 110 / 19
Регистрация: 26.04.2013
Сообщений: 585
Завершенные тесты: 2
07.11.2013, 20:38     Не работает функция сортировки #2
Цитата Сообщение от nedsi Посмотреть сообщение
for ( int i =0; i<k; i++)
{
for (int j = 0; j<k-1; j++)
{
if (MyRect[j].GetArea()<MyRect[j+1].GetArea()) //сортирую элементы по упаданию площади
{
temp = MyRect[j];
MyRect[j] = MyRect[j+1];
MyRect[j+1] = temp;
}
}
}
может
C++
1
2
for (i = 0; i < k-1; ++i)
   for (j=i+1; j < k; ++j)
nedsi
2 / 2 / 0
Регистрация: 18.09.2013
Сообщений: 65
07.11.2013, 20:48  [ТС]     Не работает функция сортировки #3
Цитата Сообщение от mat_for_c Посмотреть сообщение
может
C++
1
2
for (i = 0; i < k-1; ++i)
   for (j=i+1; j < k; ++j)
Видимо ошибка в записи в файл...
mat_for_c
 Аватар для mat_for_c
115 / 110 / 19
Регистрация: 26.04.2013
Сообщений: 585
Завершенные тесты: 2
07.11.2013, 21:21     Не работает функция сортировки #4
C++
1
if (MyRect[j].GetArea()<MyRect[j+1].GetArea()) //сортирую элементы по упаданию площади
а надо

C++
1
if (MyRect[i].GetArea()<MyRect[j].GetArea()) //сортирую элементы по упаданию площади
Цитата Сообщение от nedsi Посмотреть сообщение
while (true)
* * {
* * * * if (k == 0) break;
а нельзя ли проще?
C++
1
2
for (i=0; i<k; ++i) {
   ...
Yandex
Объявления
07.11.2013, 21:21     Не работает функция сортировки
Ответ Создать тему
Опции темы

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