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

qsort C++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Работа с файлами http://www.cyberforum.ru/cpp-beginners/thread80439.html
Задача: в файле Y1 задана матрица вещественных чисел. Сформировать файл Y2, в котором строки матрицы упорядочены по убыванию элементов первого столбца........Кому не сложно, помогите в написании этой программы, просто я новичок в Си и пока мало в нём разбираюсь, а задачу нужно сдать до сессии, иначе не допуск к экзамену((
C++ Рекурсия Маска файла представляет собой строку, состоящую из символов, допустимых в имени файла, и знаков ‘?’ и ‘*’. Вопросительный знак можно заменять на произвольный символ, допустимый в имени файла, а ‘*’ – на произвольную (в том числе пустую) строку из таких символов. Если некоторая строка может быть получена таким способом, то говорят, что она допускается заданной маской. Написать функцию,... http://www.cyberforum.ru/cpp-beginners/thread80438.html
Написать процедуру сортировки строк матрицы в порядке неубывания максимального по модулю элемента C++
Написать процедуру сортировки строк матрицы в порядке неубывания максимального по модулю элемента. Оформить как функцию вычисление максимального по модулю элемента строки и как процедуру – перестановку строк. Заранее БОЛЬШОЕ спасибо
Составить словарь всех слов, встречающихся в заданном текстовом файле. C++
Составить словарь всех слов, встречающихся в заданном текстовом файле. Для каждого слова определить сколько раз оно встречается. Помогите пожалуйста...
C++ Выяснить, имеется ли среди чисел n, n+1, ..., 2n близнецы http://www.cyberforum.ru/cpp-beginners/thread80427.html
Дано натуральное число n. Выяснить, имеется ли среди чисел n, n+1, ..., 2n близнецы, т.е. простые числа, разность между которыми равна двум. (Определить процедуру, позволяющую распознать простые числа).
C++ структуры описать структуру с именем student, содержащую следующие поля 1. фамилия и инициалы 2. номер группы 3 успеваемость(массив из 5 элементов) Написать программу, выполняющие следующие действия 1. ввод с клавиатуры данных в массив, состоящих из 10 структур типа student. записи должны быть упорядочены по афавиту 2. вывод на дисплей фамилий и номер группы для всех студентов, имеющих хотя бы одну... подробнее

Показать сообщение отдельно
Tani
25 / 25 / 1
Регистрация: 27.12.2009
Сообщений: 82
27.12.2009, 12:02     qsort C++
Помогите, плиз,разобраться с этой функцией, я прогу написала, но мало чего понимаю в ней, я написала в трех файлах, так и выкладываю.


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 *)), ну и вообще по ходу ничего, связанное с ней. Честно облазила все сайты, чтоб разобраться, но наверно, мозгов не хватат
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru