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

Сортировка string по алфавиту в структуре - C++

Восстановить пароль Регистрация
 
Kuzia-22
7 / 6 / 2
Регистрация: 21.11.2013
Сообщений: 46
18.06.2014, 16:01     Сортировка string по алфавиту в структуре #1
Итак, задача считать информацию из файла, в формате string\t char\t int\n и отсортировать в алфавитном порядке по первому значению в строке (т.е. по string);

На вход получаю вот эти данные:
Код
Alex M 89
Calex W 99
Balex M 90
Lalex M 87
Ealex W 91
На выходе имею некорректно отсортированное:
Код
Lalex	M	87
Alex	M	89
Balex	M	90
Calex	W	99
Ealex	W	91
Код:

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
#include<stdio.h>
#include<conio.h>
#include<string.h>
 
struct SPRAV
{           
char fio [10];
char pol[2];
int god;};
 
struct SPRAV ludi[5];
struct SPRAV buf;
FILE *fp,*fp1;
int minG;
int i,j;
main()
{
 fp=fopen("input.txt","r");
 fp1=fopen("output.txt","w");
 for (i=0; i<5; i++)
 {
    fscanf(fp,"%s\t%s\t%d\n",ludi[i].fio,ludi[i].pol,&ludi[i].god);
 }
 fclose(fp);
 for (i=0;i<5;i++)
    {
     printf("%s\t",ludi[i].fio);
     printf("%s\t",ludi[i].pol);
     printf("%d\n",ludi[i].god);
    }
 getch();
 
 for (i=0;i<4;i++)
     {
 for (j=i+1;j<5;j++)
 if (strcmp(ludi[i].fio, ludi[j].fio))
{
         buf=ludi[i];
         ludi[i]=ludi[minG];
         ludi[minG]=buf;
        }
     } 
 printf("\nOUTPUT.TXT:\n");
 for (i=0; i<5; i++)
            {
             fprintf (fp1,"%s\t%s\t%d\n",ludi[i].fio,ludi[i].pol,ludi[i].god);
             printf("%s\t%d\n",ludi[i].fio,ludi[i].god);
            }
 fclose (fp1);
 getch();
 return 0;
}


Что я делаю не так?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2014, 16:01     Сортировка string по алфавиту в структуре
Посмотрите здесь:

C++ Сортировка в структуре
C++ String в структуре
Сортировка данных в структуре C++
Сортировка в структуре C++
C++ Сортировка в структуре
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Renji
1535 / 983 / 240
Регистрация: 05.06.2014
Сообщений: 2,963
18.06.2014, 16:08     Сортировка string по алфавиту в структуре #2
Что я делаю не так?
Не читаете доку к strcmp. Эта функция возвращает ноль если строки равны, значение больше нуля если первый аргумент больше второго и значение меньше нуля если первый аргумент меньше. Напишите if (strcmp(ludi[i].fio, ludi[j].fio)>0), должно помочь.
Kuzia-22
7 / 6 / 2
Регистрация: 21.11.2013
Сообщений: 46
18.06.2014, 16:11  [ТС]     Сортировка string по алфавиту в структуре #3
Renji, большое спасибо. Я думал отличие от ноля автоматически воспринимается как true или false
Renji
1535 / 983 / 240
Регистрация: 05.06.2014
Сообщений: 2,963
18.06.2014, 16:13     Сортировка string по алфавиту в структуре #4
Ну так именно что отличие от ноля воспринималось как true. А вам надо было воспринимать как true превышение ноля.
Yandex
Объявления
18.06.2014, 16:13     Сортировка string по алфавиту в структуре
Ответ Создать тему
Опции темы

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