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

qsort C++ - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 39, средняя оценка - 4.92
Tani
25 / 25 / 1
Регистрация: 27.12.2009
Сообщений: 82
27.12.2009, 12:02     qsort C++ #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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#ifndef _STRUCT_H
#define _STRUCT_H
struct Data
{
    int den;
    int mesyac;
    int god;
};
struct Zakaz
{
    char name[25];
    long numz;
    Data vidat; 
};
void InStruct (Zakaz *p,int N);
void OutStruct (Zakaz *p,int N);
int compare(Zakaz* arg1,Zakaz* arg2);
#endif
 
 
 
 
#include <iostream>
#include <iomanip>
#include "struct.h"
using namespace std;
int i;
void InStruct (Zakaz*p,int N)
{ 
    for(i=0;i<N;i++)
    {
    cout<<"Vvedite imya ";
    cin>>p[i].name;
    cout<<"Vvedite №zakaza  ";
    cin>>p[i].numz;
    cout<<"Vvedite daty ";
    cin>>p[i].vidat.den>>p[i].vidat.mesyac>>p[i].vidat.god;
    }
}
void Search (Zakaz*p,int n,char *h)
{
    for (i=0;i<n;i++)
    if(strcmp(h,p[i].name)==0)
   cout<<endl;
    cout<< setw(25)<<p[i].name<< setw(25);
    cout<<setw(10)<<p[i].numz<<setw(10);
    cout<<p[i].vidat.den<<"."<<p[i].vidat.mesyac<<"."<<p[i].vidat.god<<endl;
    cout<<endl;
}
 
void OutStruct (Zakaz *p,int N)
{
    for (i=0;i<N;i++)
    {
    cout<<endl;
    cout<< setw(25)<<p[i].name<< setw(25);
    cout<<setw(10)<<p[i].numz<<setw(10);
    cout<<p[i].vidat.den<<"."<<p[i].vidat.mesyac<<"."<<p[i].vidat.god<<endl;
    cout<<endl;
    }
}
    int compare (Zakaz* arg1, Zakaz * arg2)
{
  if (arg1->vidat.mesyac< arg2->vidat.mesyac)
    return -1;
  if (arg1->vidat.mesyac== arg2->vidat.mesyac)
    return 0;
  if (arg1->vidat.mesyac> arg2->vidat.mesyac)
    return 1;
}

MAIN


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
#include <iostream>
#include "struct.h"
#include <stdio.h>
using namespace std;
int main (void)
{   
    const int N=3;
    int i;
    Zakaz p[N];
    char h[25];
    InStruct(p,N);
    int compare (Zakaz*,Zakaz *);
{
  for (i = 0; i <=N-1; i++)
   qsort (p, 3, sizeof (Zakaz),
  (int (*)(const void *, const void *)) compare);
  cout<< endl;
 
}
    OutStruct(p,N);
        cout<<"Vvedite imya ";
    cin>>h;
    cout<< endl;
    Search(p,N,h);
    return 0;
}
Результат: Сортировка происходит по полю Месяц, сначала после ввода он пишет подряд все значения поля Месяц. Затем он выводит отсортированный массив тоже подряд без пробелов( вообще не понимаю в каком месте это происходит) перед данными он пишет Imya и плюс к этому выводит еще одну строку данных с непонятными значениями(так же Imya и вмесио данных какие-то значения), Затем он выводит нормально отсортированный массив (OutStruct), а когда повведенному имени нужно вывести значения(Search) он выводит ту же 4-ую строку, которую выводил раньше( с непонятными значениями). Помогите, в свою программу я переделывала , вставляя qsort наугад, нашла в нете прогу...Я не могу понять, как пишется compare, и 3 параметр функции: int (*)(const void *, const void *)), ну и вообще по ходу ничего, связанное с ней. Честно облазила все сайты, чтоб разобраться, но наверно, мозгов не хватат
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2009, 12:02     qsort C++
Посмотрите здесь:

C++ qsort
C++ Qsort
C++ qsort
Функция Qsort C++
Vector and qsort C++
C++ не работает qsort
qsort C++
C++ qsort

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Андрейка
407 / 211 / 22
Регистрация: 25.03.2009
Сообщений: 712
27.12.2009, 12:04     qsort C++ #2
Tani, юзай std::sort(...) раз у тебя С++ qsort for C.
Tani
25 / 25 / 1
Регистрация: 27.12.2009
Сообщений: 82
27.12.2009, 12:53  [ТС]     qsort C++ #3
Пожалуста , посмотрите, просто с массивом понятно как работать, у меня массив структур

Добавлено через 38 минут
Извините,нашла ошибку, вспомнила, что вывод слова Imya у меня был, но я это удалила, получается, это в памяти геде-то хранилось, я исключила из проекта , потом добавида- и все ОК
Yandex
Объявления
27.12.2009, 12:53     qsort C++
Ответ Создать тему
Опции темы

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