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

Сортировка выводимых данных в алфавитном порядке - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.88
mabden
0 / 0 / 0
Регистрация: 24.12.2009
Сообщений: 10
24.12.2009, 09:42     Сортировка выводимых данных в алфавитном порядке #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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
 
#define DL_FIO 25
#define DL_ZZAD 10
#define  DL_DR 8
 
 
struct zadiak
{
    char fio[DL_FIO];
    char zad[DL_ZZAD];
    char dr[DL_DR];
};
 
void Info(FILE *f);
void Zadiak(FILE *f);
 
int main()
{
    FILE *f;  /* ссылка на входной файл */
    char n;   /* номер пункта меню */
    clrscr();
    f= fopen("zadiak.txt", "r");
    if (f==NULL)
    {
        puts ("Файл  zadiak.txt не найден");
                getch();
            return 1;
    }
    do
    {
        puts ("\n========================================================");
        puts ("Выберите номер пункта меню:");
        puts ("1 - вывод информации о заданном человеке");
        puts ("2 - вывод информацию о людях, родившихся под заданным знаком Задиака");
        puts ("3 - выход");
        puts("------------------------------------------------------");
        n = getche();
 
    switch(n)
         {
            case '1': Info(f); break;
            case '2': Zadiak(f); break;
            case '3': break;
            default: puts("\nНужно вводить номер пункта от 1 до 3");
         }
 
 
         if (n!='3')
         {  puts("\nДля продолжения нажмите любую клавишу");
                getch();
         }
    }
    while (n != '3');
    fclose(f);
    return 0;
}
 
void Info(FILE *f)
{
    zadiak tz;
    int n = 0;
    char zcel[DL_FIO];
    puts ("\nВведите интересующего человека");
    gets (zcel);
 
    rewind (f);
    while(fgets((char*)&tz,45,f)!=NULL)
    {
        tz.fio[DL_FIO-1]='\0';
        tz.zad[DL_ZZAD-1]='\0';
        tz.dr[DL_DR-1]='\0';
        if (strncmp (tz.fio, zcel, strlen (zcel)) == 0 )
        {
            n++;
            printf("\n %s %s  %s",tz.fio, tz.zad, tz.dr );
        }
    }
    if(n==0)puts("Заданого человека нет!");
}
 
 
void Zadiak(FILE *f)
{
    zadiak tz;
    int n = 0;
    char cel[DL_FIO];
    puts ("\nВведите интересующей знак задиака");
    gets (cel);
 
    rewind (f);
    while(fgets((char*)&tz,45,f)!=NULL)
    {
        tz.fio[DL_FIO-1]='\0';
        tz.zad[DL_ZZAD-1]='\0';
        tz.dr[DL_DR-1]='\0';
        if (strncmp (tz.zad, cel, strlen (cel)) == 0 )
        {
 
                        // вот здесь что то должно произойти чтоб отсортировать выходящие данные
            n++;
            printf("\n%d %s %s  %s",n, tz.fio, tz.zad, tz.dr );
        }
    }
    if(n==0)puts("Заданого задиака нет!");
}
Добавлено через 10 минут
отсортировать массив не сложно, я решил пузырьковым методом.

Проблема в том что когда я попытался вывести данные в массив то выдает ошибку cannot convert from 'char *' to 'char

вот как я пытался, может надо это по другому написать?

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
void Zadiak(FILE *f)
{
    zadiak tz;
    int n = 0;
    char cel[DL_FIO];
    puts ("\nВведите интересующей знак задиака");
    gets (cel);
    char sortfio[100,3]; //создал массив
 
    rewind (f);
    while(fgets((char*)&tz,45,f)!=NULL)
    {
        tz.fio[DL_FIO-1]='\0';
        tz.zad[DL_ZZAD-1]='\0';
        tz.dr[DL_DR-1]='\0';
        if (strncmp (tz.zad, cel, strlen (cel)) == 0 )
        {
            sortfio[n,0]=tz.fio; //записываю данные в массив (именно на эти строчки и ругается компилятор)
            sortfio[n,1]=tz.zad;
            sortfio[n,2]=tz.dr;
 
            n++;
            //printf("\n%d %s %s  %s",n, tz.fio, tz.zad, tz.dr );
        }
    }
    if(n==0)puts("Заданого задиака нет!");
    else
    {
               // добавил вывод массива
        for(int i=0;i<n;i++)
        {
            printf("\n%d %s %s  %s",i+1, sortfio[i,0],sortfio[i,1], sortfio[i,2] );
        }
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2009, 09:42     Сортировка выводимых данных в алфавитном порядке
Посмотрите здесь:

C++ сортировка строки в алфавитном порядке
Сортировка строк в алфавитном порядке C++
Сортировка строк в алфавитном порядке C++
Сортировка в алфавитном порядке... C++
Сортировка структур в алфавитном порядке C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
24.12.2009, 10:56     Сортировка выводимых данных в алфавитном порядке #2
обьявлено char sortfio[100,3];// sortfio массив из 100 массивов по 3 символа.
а тут:
C++
1
2
3
sortfio[n,0]=tz.fio; //sortfio[n,0] это один символ, tz.fio - массив charов, как можно символу массив присваивать
sortfio[n,1]=tz.zad;
sortfio[n,2]=tz.dr;
тогда надо обьявить:
C++
1
char *sortfio[100][3];//массив из 100 массивов по 3 указателя на char.
что бы sortfio[n,0]=tz.fio; было правельно.
ибо имя массива можно использовать в качестве указателя на его первый элемент, в твоем случаи это имя tz.fio.
таке обращение к элементу A[i,j] - не корректно, надо A[i][j]. Это тоже ошибка у тебя.
и в целом что то мудрено очень у тебя получилось. можно намного проще эту эадачу решить помоему
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
24.12.2009, 11:00     Сортировка выводимых данных в алфавитном порядке #3
C++
1
char *sortfio[100,3];
операция запятая сработает так, что объявится массив из трёх элементов

C++
1
char *sortfio[100][3];
массив сто по три, где каждый элемент - указатель на символ (адрес символа)
mabden
0 / 0 / 0
Регистрация: 24.12.2009
Сообщений: 10
24.12.2009, 19:57  [ТС]     Сортировка выводимых данных в алфавитном порядке #4
Ну а может есть другой способ вывода в алфавитном порядке?

Добавлено через 3 часа 16 минут
Сделал как вы сказали переправил, заработало но теперь один баг, он последнию запись вписывает во все, то есть если мы записываем
C++
1
sortfio[n] [0]=tz.fio;
то заместо n он вписывает во все и тоесть последняя запись отображается во всех ((((((((

помогите


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
void Zadiak(FILE *f)
{
        zadiak tz;
        int n = 0;
        char cel[DL_FIO];
        puts ("\nВведите интересующей знак задиака");
        gets (cel);
        char *sortfio[100] [3]; //создал массив
 
        rewind (f);
        while(fgets((char*)&tz,45,f)!=NULL)
        {
                tz.fio[DL_FIO-1]='\0';
                tz.zad[DL_ZZAD-1]='\0';
                tz.dr[DL_DR-1]='\0';
                if (strncmp (tz.zad, cel, strlen (cel)) == 0 )
                {
                        sortfio[n] [0]=tz.fio; //записываю данные в массив (именно на эти строчки и ругается компилятор)
                        sortfio[n] [1]=tz.zad;
                        sortfio[n] [2]=tz.dr;
 
                        n++;
                        //printf("\n%d %s %s  %s",n, tz.fio, tz.zad, tz.dr );
                }
        }
        if(n==0)puts("Заданого задиака нет!");
        else
        {
               // добавил вывод массива
                for(int i=0;i<n;i++)
                {
                        printf("\n%d %s %s  %s",i+1, sortfio[i] [0],sortfio[i] [1], sortfio[i] [2] );
                }
        }
}
Добавлено через 4 минуты
получаеться что то ввиде
1 Чичерин К. А. дева 19.09.8
2 Чичерин К. А. дева 19.09.8
3 Чичерин К. А. дева 19.09.8
4 Чичерин К. А. дева 19.09.8
5 Чичерин К. А. дева 19.09.8
6 Чичерин К. А. дева 19.09.8
7 Чичерин К. А. дева 19.09.8
8 Чичерин К. А. дева 19.09.8
9 Чичерин К. А. дева 19.09.8
10 Чичерин К. А. дева 19.09.8

хотя структура файла
Разадинов А. П. водолей 12.04.88
Нишиков А. Н. рыбы 5.10.80
Вавилонов Е. В. скорпион 20.11.78
Василев Н. В. deva 21.10.79
Паласухин К. В. рак 18.08.84
Варанен Н. Г. дева 14.03.86
Sad D. B. дева 9.07.87
Ланшиков П. Р. лев 30.10.81
Куринанов Л. Т. стрилец 23.09.45
Чичерин К. А. дева 19.09.89

Добавлено через 40 минут
Помогите люди добрые!!!! 4 день голову ламаю....

Добавлено через 4 часа 43 минуты
Ребятушки, ну дайте кто нибудь советик, очень нана!!!
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
25.12.2009, 05:26     Сортировка выводимых данных в алфавитном порядке #5
Цитата Сообщение от mabden
то заместо n он вписывает во все и тоесть последняя запись отображается во всех ((((((((
ну, так это бывает когда память не выделяешь для каждой строки
надо дублировать в память каждую строку и потом адресы этих дубликатов сохранять в массив указателей
не забыть ещё потом освободить каждую строку
mabden
0 / 0 / 0
Регистрация: 24.12.2009
Сообщений: 10
25.12.2009, 07:29  [ТС]     Сортировка выводимых данных в алфавитном порядке #6
Цитата Сообщение от accept Посмотреть сообщение
ну, так это бывает когда память не выделяешь для каждой строки
надо дублировать в память каждую строку и потом адресы этих дубликатов сохранять в массив указателей
не забыть ещё потом освободить каждую строку

а как примерно это выглядит????
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
25.12.2009, 07:35     Сортировка выводимых данных в алфавитном порядке #7
C
1
    sortfio[n] [0]=tz.fio;
C
1
    sortfio[n][0] = DuplicateLine(tz.fio);
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdlib.h>
#include <string.h>
 
/* DuplicateLine:  создаёт копию для строки l */
char *DuplicateLine(const char *l)
{
    char *p;
    
    if (l == NULL || *l == '\0')
        return NULL;
    if ((p = malloc(strlen(l)+1)) != NULL);
        strcpy(p, l);
    return p;
}
mabden
0 / 0 / 0
Регистрация: 24.12.2009
Сообщений: 10
25.12.2009, 08:18  [ТС]     Сортировка выводимых данных в алфавитном порядке #8
а это как использовать?



C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdlib.h>
#include <string.h>
 
/* DuplicateLine:  создаёт копию для строки l */
char *DuplicateLine(const char *l)
{
    char *p;
    
    if (l == NULL || *l == '\0')
        return NULL;
    if ((p = malloc(strlen(l)+1)) != NULL);
        strcpy(p, l);
    return p;
}
[/QUOTE]
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
25.12.2009, 08:24     Сортировка выводимых данных в алфавитном порядке #9
mabden, как обычную функцию
mabden
0 / 0 / 0
Регистрация: 24.12.2009
Сообщений: 10
25.12.2009, 08:29  [ТС]     Сортировка выводимых данных в алфавитном порядке #10
тепрь тут ошибка
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdlib.h>
#include <string.h>
 
/* DuplicateLine:  создаёт копию для строки l */
char *DuplicateLine(const char *l)
{
    char *p;
    
    if (l == NULL || *l == '\0')
        return NULL;
    if ((p = malloc(strlen(l)+1)) != NULL); //в этой страке
        strcpy(p, l);
    return p;
}
cannot convert `void *` to `char *`
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
25.12.2009, 09:32     Сортировка выводимых данных в алфавитном порядке #11
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdlib.h>
#include <string.h>
 
/* DuplicateLine:  создаёт копию для строки l */
char *DuplicateLine(const char *l)
{
    char *p;
    
    if (l == NULL || *l == '\0')
        return NULL;
    if ((p = (char *) malloc(strlen(l)+1)) != NULL);
        strcpy(p, l);
    return p;
}
Добавлено через 1 минуту
Цитата Сообщение от mabden
а это как использовать?
функцию под main записываешь, а сверху заголовок

C
1
char *DuplicateLine(const char *);
mabden
0 / 0 / 0
Регистрация: 24.12.2009
Сообщений: 10
25.12.2009, 11:48  [ТС]     Сортировка выводимых данных в алфавитном порядке #12
огрмоданое тебе спасибо все получилось

теперь к возвращаюс к названию темы

добавил сортировку

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
void Zadiak(FILE *f)
{
        zadiak tz;
        int n = 0;
        char cel[DL_FIO];
                puts ("\nВведите интересующей знак задиака");
                gets (cel);
                char *sortfio[100] [3]; //создал массив
 
                rewind (f);
                while(fgets((char*)&tz,45,f)!=NULL)
                {
                                tz.fio[DL_FIO-1]='\0';
                                tz.zad[DL_ZZAD-1]='\0';
                                tz.dr[DL_DR-1]='\0';
                                if (strncmp (tz.zad, cel, strlen (cel)) == 0 )
                                {
                                                sortfio[n] [0]=DuplicateLine(tz.fio);
                                                sortfio[n] [1]=DuplicateLine(tz.zad);
                                                sortfio[n] [2]=DuplicateLine(tz.dr);
 
                                                n++;
                                                //printf("\n%d %s %s  %s",n, tz.fio, tz.zad, tz.dr );
                                }
                }
                if(n==0)puts("Заданого задиака нет!");
                else
                {
                        
 
        printf("\n %d",n); 
 
//сортировку данных добавил 
        char *temp[3]; 
        for (int i=1;  i<n  ;  i++)
        {
            for (int j=0;  j<n-i;  j++){
                //if (sortfio [j][0]>sortfio [j+1][0])
                if (strcmp(sortfio [j][0], sortfio [j+1][0])>0)
                {
                    temp[0]=sortfio[j][0]; 
                    sortfio [j][0]=sortfio [j+1][0];
                    sortfio [j+1][0]=temp[0];
 
                    /*strcpy(temp[0],sortfio[j][0]);
                    strcpy(sortfio [j][0],sortfio [j+1][0]);
                    strcpy(sortfio [j+1][0],temp[0]);*/
                }
            }
        }        
//вывод массива             
        for(i=0;i<n;i++)
        {
            printf("\n%d %s %s  %s",i+1, sortfio[i] [0],sortfio[i] [1], sortfio[i] [2] );
        }
    }
}
но проблема теперь такая почему то переменная n уменьшаеться

например если комментировать сортировку то n=10 и делает нормальный вывод данных

если с сортировкой то почему то n=2 и причем массив тоже уменьшается до двух значений
и выводятся два последних значения

с чем это связанно? и как это обойти?

Добавлено через 6 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        char temp[3]; 
        for (int i=1;  i<n  ;  i++)
        {
            for (int j=0;  j<n-i;  j++){
                //if (sortfio [j][0]>sortfio [j+1][0])
                if (strcmp(sortfio [j][0], sortfio [j+1][0])>0)
                {
                    temp[0]=(char)sortfio[j][0]; 
                    sortfio [j][0]=sortfio [j+1][0];
                    sortfio [j+1][0]=(char*)temp[0];
 
                }
            }
        }
попробовал вот так все нормально сработало
но теперь такая проблема первые 9 каие то ироглифы а 10 нормально вывелся
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
25.12.2009, 12:54     Сортировка выводимых данных в алфавитном порядке #13
C
1
    char *temp[3];
почему не char *temp;

а что вообще сортируется ?

Добавлено через 3 минуты
C
1
    while(fgets((char*)&tz,45,f)!=NULL)
tz - структура, а fgets работает со строкой
mabden
0 / 0 / 0
Регистрация: 24.12.2009
Сообщений: 10
25.12.2009, 14:06  [ТС]     Сортировка выводимых данных в алфавитном порядке #14
потомучто мне три элемента потом надо будет тоже сортировать
sortfio [j][0]
sortfio [j][1]
sortfio [j][2]

все последовал вашему совету сделал

char *temp

получилось что то вроде
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
//сортировку данных добавил
        char *temp;
        for (int i=1;  i<n  ;  i++)
        {
            for (int j=0;  j<n-i;  j++){
                //if (sortfio [j][0]>sortfio [j+1][0])
                if (strcmp(sortfio [j][0], sortfio [j+1][0])>0)
                {
                    temp=sortfio[j][0];
                    sortfio [j][0]=sortfio [j+1][0];
                    sortfio [j+1][0]=temp;
 
                    temp=sortfio[j][1];
                    sortfio [j][1]=sortfio [j+1][1];
                    sortfio [j+1][1]=temp;
 
                    temp=sortfio[j][2];
                    sortfio [j][2]=sortfio [j+1][2];
                    sortfio [j+1][2]=temp;
                }
            }
        }
//вывод массива
        for(i=0;i<n;i++)
        {
            printf("\n%d %s %s  %s",i+1, sortfio[i] [0],sortfio[i] [1], sortfio[i] [2] );
        }
    }
и все получилось

Я ВАС ЛЮБЛЮ СПАСИБО ВАМ БОЛЬШОЕ!!!

КАК Я МОГУ ВАС ОТБЛАГОДАРИТЬ?

Добавлено через 6 минут
вот только пожалуйста разъясните что имено происходит в этой функции

а то чует моя печенка что меня этим вопросом он вгонит меня в ступор

C++
1
2
3
4
5
6
7
8
9
10
char *DuplicateLine(const char *l)
{
    char *p;
    
    if (l == NULL || *l == '\0')
        return NULL;
    if ((p = (char *) malloc(strlen(l)+1)) != NULL);
        strcpy(p, l);
    return p;
}
Добавлено через 11 минут
Цитата Сообщение от accept Посмотреть сообщение

C
1
    while(fgets((char*)&tz,45,f)!=NULL)
tz - структура, а fgets работает со строкой
нет тут то все в порядке он считывает по строке по 45 символов записывает в структуру в дальнейшим мы как раз и берем из нее данные пока не наступит конец файла
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
25.12.2009, 21:45     Сортировка выводимых данных в алфавитном порядке #15
fwrite вместо fgets (fgets реагирует на '\n')

Цитата Сообщение от mabden
вот только пожалуйста разъясните что имено происходит в этой функции
C
1
2
    if (l == NULL || *l == '\0') /* если переданная строка неправильная, вернуть NULL */
        return NULL;
C
1
2
    if ((p = (char *) malloc(strlen(l)+1)) != NULL);
        strcpy(p, l);
выделить память для копии строки, в зависимости от её длины, учесть нуль-символ, явно привести возвращённый указатель void * к char *, сохранить в p
если память выделилась, скопировать в неё переданную строку

C
1
    return p;
вернуть указатель на память или NULL, если память не выделилась
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2010, 15:19     Сортировка выводимых данных в алфавитном порядке
Еще ссылки по теме:

C++ Сортировка структур в алфавитном порядке
Сортировка в алфавитном порядке C++
C++ Сортировка слов в алфавитном порядке

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

Или воспользуйтесь поиском по форуму:
Serik2010
1 / 1 / 1
Регистрация: 01.04.2010
Сообщений: 46
05.04.2010, 15:19     Сортировка выводимых данных в алфавитном порядке #16
Вот мой вариант:
11.cpp:
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
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include "zodiak.h"
 
using namespace std;
 
 
 
 
 
/*главная функция*/
void main()
{
    char zapros[15];
    ZNAK z[n];
 
    cout<<"zapolnite dannue o astrologah\n";
   
    input(z);
    sort(z);
 
    cout<<"vvedite znak zadiaka\n";
    cin>>zapros;
    print(z,zapros);
 
    cin>>index;
 
}
Добавлено через 22 секунды
zodiak.h
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
71
72
73
74
75
#include <iostream>
#include <string.h>
#include <stdlib.h>
 
using namespace std;
 
const int  n = 4;
int index = 1;
 
struct ZNAK
{
    char name[15];
    char lastname[15];
    char zodiak[15];
    int birthday[3];//дд мм гг
};
 
/*функция заполнения массива структур*/
void input(ZNAK *z)
{
    for(int i=0;i<n;i++)
    {
        cout << "Input name:";
        cin >> z[i].name;
        cout << "Input lastname:";
        cin >> z[i].lastname;
        cout << "Input znak zodiaka:";
        cin >> z[i].zodiak;
        cout << "Input den' rogdeniya:";
        cin >> z[i].birthday[0];
        cout << "Input mesyac' rogdeniya:";
        cin >> z[i].birthday[1];
        cout << "Input god rogdeniya:";
        cin >> z[i].birthday[2];
        cout<<endl;
    
    }
}
 
 
/*сортировка массив структур по номеру маршрута*/
void sort(ZNAK*z)
{
    for(int i=0; i<n; i++)
        for(int j=0; j<n; j++)
            if(z[j].birthday[2] > z[j+1].birthday[2])
            {
                ZNAK x = z[j];
                z[j] = z[j+1];
                z[j+1] = x;
            }
}
 
 
/*печать результата на экран*/
void print(ZNAK*z,char *zapros)
{
    int proverka = 0;
 
    for(int i=0;i<n;i++,index++)
    {
        if(strcmp(z[i].zodiak,zapros) == 0)
        {
        cout <<endl;
        cout <<"Astrolog nomer: "<<index<<"(s uchetom sortirovki!!!)"<<endl;
        cout << "name:"<< z[i].name<<endl;
        cout << "lastname:"<<z[i].lastname<<endl;
        cout << "znak zodiaka:"<<z[i].zodiak<<endl;
        cout << "dd/mm/gg:"<< z[i].birthday[0]<<"/"<< z[i].birthday[1]<<"/"<< z[i].birthday[2]<<endl;
        proverka++;
        }       
    }
    if(proverka == 0)cout<<"\nAstrolog s takim znakom net v spiske!";
 
}
Yandex
Объявления
05.04.2010, 15:19     Сортировка выводимых данных в алфавитном порядке
Ответ Создать тему
Опции темы

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