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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
sergeu90
27 / 28 / 3
Регистрация: 17.10.2009
Сообщений: 739
#1

не работает qsort - C++

11.03.2012, 17:18. Просмотров 1475. Ответов 27
Метки нет (Все метки)

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
#include <iostream>
#include  <math.h>
#include <iomanip>
#include <string.h>
using namespace std;
 
struct MARSH
{
    char nac_punkt[100];
    char konec_punkt[100];
    int   nomer;
    int   dlina;
}*p1[50];
int comp(const void* a, const void* b)
{
    const  MARSH* k = (const  MARSH*)a;
    const  MARSH* m = (const  MARSH*)b;
    int s = ((k ->dlina) - (m ->dlina));
       
    return s;
}
void  main(void)
{
    FILE *f1;
    setlocale(LC_ALL,"Russian");
    if((f1=fopen("2.dat", "rb+"))==NULL) {
        printf("Ошибка при открытии файла.\n");
        exit(1);
    }
 
 
    for(int i=0;i<5;i++)
    {
        MARSH *pmarh=new MARSH[i+1];
 
        if (pmarh != NULL) cout << "Память успешно выделена" << endl; 
        else cout << "Ошибка выделения памяти" << endl; 
        fread(&pmarh[i],sizeof(MARSH),1,f1);
        p1[i]=&pmarh[i];
        cout<<i+1<<"-aя запись"<<endl;
        cout<<"начальный пункт  "<<pmarh[i].nac_punkt<<endl;
        cout<<"название конечного пункта  "<<pmarh[i].konec_punkt<<endl;
        cout<<"длина  "<<pmarh[i].dlina<<endl;
        cout<<"номер   "<<pmarh[i].nomer<<endl; 
    }
    cout<<"Сортировка"<<endl;
    cout<<endl;
    cout<<endl;
    cout<<endl;
    cout<<endl;
    cout<<endl;
    cout<<endl;
    cout<<endl;
    qsort(p1, 5, sizeof(p1[0]), comp);
    for(int i=0;i<5;i++)
    {      
        cout<<i+1<<"-aя запись"<<endl;
        cout<<"начальный пункт  "<<p1[i]->nac_punkt<<endl;
        cout<<"название конечного пункта  "<<p1[i]->konec_punkt<<endl;
        cout<<"длина  "<<p1[i]->dlina<<endl;
        cout<<"номер   "<<p1[i]->nomer<<endl    
    }
    fclose(f1);
    system("PAUSE");
}
не работает qsort нужным образом тоесть не сортирует

Добавлено через 14 минут
посмотрите пожалуйста код почему qsort не хочет сортировать
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2012, 17:18     не работает qsort
Посмотрите здесь:

C++ qsort
qsort C++ C++
C++ сортировка qsort
Вопрос по ()qsort C++
C++ не работает qsort
C++ Застопорился с qsort
C++ qsort
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sergeu90
27 / 28 / 3
Регистрация: 17.10.2009
Сообщений: 739
11.03.2012, 21:30  [ТС]     не работает qsort #21
я выделял pmarh как ее завершить
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
11.03.2012, 22:55     не работает qsort #22
sergeu90, pmath = p1
Можно удалять хоть оттуда хоть оттуда
sergeu90
27 / 28 / 3
Регистрация: 17.10.2009
Сообщений: 739
12.03.2012, 01:03  [ТС]     не работает qsort #23
не могу удалить вне цикла пишит не известный индетефикатор
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
12.03.2012, 01:04     не работает qsort #24
C++
1
2
3
4
for(int i=0;i<5;i++)
{
  delete p1[i];
}
sergeu90
27 / 28 / 3
Регистрация: 17.10.2009
Сообщений: 739
12.03.2012, 01:26  [ТС]     не работает qsort #25
вы освобождаете p1 а надо не то освобождать
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
12.03.2012, 01:27     не работает qsort #26
sergeu90, я уже объяснял выше.
C++
1
2
3
int *n = new int(10);
int *m = n;
delete m;
Удалится n, т.к. m = n.
sergeu90
27 / 28 / 3
Регистрация: 17.10.2009
Сообщений: 739
12.03.2012, 01:48  [ТС]     не работает qsort #27
все равно не могу присвоить в не цикла pmarh = p1; пишит не определенный pmarh
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2012, 02:08     не работает qsort
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
12.03.2012, 02:08     не работает qsort #28
Вы это и так делаете внутри цикла.
C++
1
p1[i]=pmarh;
От вас только требуется удалить каждый элемент из p1, как я писал.
Yandex
Объявления
12.03.2012, 02:08     не работает qsort
Ответ Создать тему
Опции темы

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