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

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

Войти
Регистрация
Восстановить пароль
 
Kuzia-22
8 / 7 / 2
Регистрация: 21.11.2013
Сообщений: 50
#1

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

18.06.2014, 16:01. Просмотров 920. Ответов 3
Метки нет (Все метки)

Итак, задача считать информацию из файла, в формате 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++):

Сортировка массива string по алфавиту - C++
Как отсортировать масив string по алфавите к примеру есть масив string на 10 елементов как отсортировать по первой букве кажного...

Сортировка строки по алфавиту в классе String - C++
Здравствуйте! Создал класс Stroka: #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; class Stroka { ...

String в структуре - C++
Добрый вечер! Подскажите пожалуйста, почему компилятор видит ошибку в строке &quot;cin &gt;&gt; tablica.marka;&quot; следующего кода: #include...

Сортировка в структуре - C++
Надо отсоритровать структуру по параметру &quot;Телефон&quot; Листал форум, вроде все написано правильно, сортировку делаю &quot;пузырьком&quot;, но выводит...

Сортировка в структуре - C++
Структура: struct Worker { string Name; int Year; status Status; ...

Сортировка в структуре - C++
Нужно считать в структуру информацию из файла, и отсортировать по зарплате. В файле записана информацию: Имя, год рождения, и зарплата. Со...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Renji
1911 / 1309 / 295
Регистрация: 05.06.2014
Сообщений: 3,743
18.06.2014, 16:08 #2
Что я делаю не так?
Не читаете доку к strcmp. Эта функция возвращает ноль если строки равны, значение больше нуля если первый аргумент больше второго и значение меньше нуля если первый аргумент меньше. Напишите if (strcmp(ludi[i].fio, ludi[j].fio)>0), должно помочь.
Kuzia-22
8 / 7 / 2
Регистрация: 21.11.2013
Сообщений: 50
18.06.2014, 16:11  [ТС] #3
Renji, большое спасибо. Я думал отличие от ноля автоматически воспринимается как true или false
Renji
1911 / 1309 / 295
Регистрация: 05.06.2014
Сообщений: 3,743
18.06.2014, 16:13 #4
Ну так именно что отличие от ноля воспринималось как true. А вам надо было воспринимать как true превышение ноля.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2014, 16:13
Привет! Вот еще темы с ответами:

Сортировка в структуре - C++
По заданию нужно ввести данные в структуре, отсортировать по цене (от наименьшей к наибольшей) и вывести. На сортировке засыпался, прошу...

Сортировка в структуре - C++
Нужно создать структуру, вбить туда инфу: имя, факультет, группа, пропусков. вывести список у кого больше пропусков (отсортировать пожалуй,...

Сортировка по фамилии в структуре - C++
Посмотрите пожалуйста структуру Студент! Нужно сделать сортировку по фамилии.Думаю, что с функцией strcmp что-то не так... Задание:...

Сортировка данных в Структуре С++ - C++
Доброго времени суток, дорогие форумчане! Возникла следующая проблема. Нужно отсортировать структуру по полю типа int Сама...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.06.2014, 16:13
Ответ Создать тему
Опции темы

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