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

Структуры.Сортировка по именам - C++

Восстановить пароль Регистрация
 
Avicii
 Аватар для Avicii
2 / 2 / 0
Регистрация: 01.12.2012
Сообщений: 123
08.04.2013, 01:56     Структуры.Сортировка по именам #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
#include <iostream>
#include <stdio.h>
using namespace std;
struct student {char fio[50];
                int ball_physics;
                int ball_rus;
                int ball_math;
               };
int main()
{ int i,k,n=5;
  student gr[n];  
    for (int i=0;i<n;i++)
     {
        printf("FIO :");
        scanf("%s", &gr[i].fio);
        printf ("Ball for Physics: ");
        scanf ("%d",&gr[i].ball_physics);
        printf ("Ball for Mathematics:");
        scanf ("%d",&gr[i].ball_math);
        printf ("Ball for Russian Langague: ");
        scanf ("%d",&gr[i].ball_rus);
     }
        printf ("-----------------------\n");
        printf ("Accepted next students:\n");
        for (int i=0;i<n;i++)
         if ((gr[i].ball_math+gr[i].ball_physics > 124)  && gr[i].ball_rus >31)
         {k=gr[i].ball_math+gr[i].ball_physics;
         printf("%s %d\n",gr[i].fio," ",k);}
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2013, 01:56     Структуры.Сортировка по именам
Посмотрите здесь:

C++ Структуры(сортировка)
сортировка структуры. C++
C++ Структуры. Сортировка
C++ Сортировка структуры
C++ Сортировка и структуры
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
08.04.2013, 02:08     Структуры.Сортировка по именам #2
Здравствуйте,столкнулся с проблемой,как отсортировать имена в алфавитном порядке,ни разу не сталкивался,не знаю как начать,помогите пожалуйста.
Просто запиши имена студентов в массив, затем отсортируй, по первой букве, короче сравни первую букву имени если она больше чем буква текущего элемента, то поменяй местами if(name[i][0]>name[j][0]) то меняешь местами, но наверно там нужно преобразование в int сделать отак наверно if((int)name[i][0]>(int)name[j][0]), то меняешь местами. Буквы в С++ имеют числовые значения, буква А как правило меньше буквы Z
Avicii
 Аватар для Avicii
2 / 2 / 0
Регистрация: 01.12.2012
Сообщений: 123
08.04.2013, 02:24  [ТС]     Структуры.Сортировка по именам #3
Цитата Сообщение от ninja2 Посмотреть сообщение
Просто запиши имена студентов в массив, затем отсортируй, по первой букве, короче сравни первую букву имени если она больше чем буква текущего элемента, то поменяй местами if(name[i][0]>name[j][0]) то меняешь местами, но наверно там нужно преобразование в int сделать отак наверно if((int)name[i][0]>(int)name[j][0]), то меняешь местами. Буквы в С++ имеют числовые значения, буква А как правило меньше буквы Z
Спасибо,про числовые значения не знал...так все понял)

Добавлено через 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
#include <iostream>
#include <stdio.h>
using namespace std;
struct student {char fio[50];
                int fi[50];
                int ball_physics;
                int ball_rus;
                int ball_math;
               };
int main()
{ int n=3,i,k,s;
  student gr[n];
    for (int i=0;i<n;i++)
     {
        printf("FIO :");
        scanf("%s", &gr[i].fio);
        printf ("Ball for Physics: ");
        scanf ("%d",&gr[i].ball_physics);
        printf ("Ball for Mathematics:");
        scanf ("%d",&gr[i].ball_math);
        printf ("Ball for Russian Langague: ");
        scanf ("%d",&gr[i].ball_rus);
     }
        printf ("-----------------------\n");
        printf ("Accepted next students:\n");
        for (int i=0;i<n;i++)
         if ((gr[i].ball_math+gr[i].ball_physics > 124)  && gr[i].ball_rus >31)
         {k=gr[i].ball_math+gr[i].ball_physics;
           for (int i=0;i<n;i++)
            for (int j=0;j<n;j++)
             if ((int)gr[i].fi[0]>(int)gr[j].fi[0])
              {
                s=gr[i];
                gr[i]=gr[j];
                gr[j]=s;
              }
 
        printf("%s %d\n",gr[i].fio," ",k);}
    return 0;
}
как только перевести с массива char перевести int,так ругается.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
09.04.2013, 04:25     Структуры.Сортировка по именам #4
от допустим у тебя массив mass фамилий, то просто выводит mass[0] первую фамилию, а тебе нужно первую букву запиши mass[0][0] ноль просто добав и преобразуй в int вроде так (int)mass[0][0] получишь числовое значений cout <<(int)mass[0][0]<<endl; должно вывести число. Ну я мб чото в синтаксисе ошибся но примерно так.

Добавлено через 3 минуты
(int)gr[i].fi[0] мб так переписать (int)(gr[i].fi[0]) отак мб я да у тебя там в структуре выше не fi а fio мб тут ошибка хз.
Yandex
Объявления
09.04.2013, 04:25     Структуры.Сортировка по именам
Ответ Создать тему
Опции темы

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