Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
Jamguranga
1 / 1 / 1
Регистрация: 08.01.2013
Сообщений: 36
1

Сортировка по алфавиту

10.09.2013, 18:39. Просмотров 1247. Ответов 10
Метки нет (Все метки)

Нужно отсортировать список студентов за месяцем рождения, Студенты, месяц у которых одинаков - должны быть отсортированы по алфавиту(их фамилии).
Сделал всё, вплоть до сортировки по алфавиту, итак:
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
#include <iostream>
#include <fstream>
#include <string>
    using namespace std;
            
    
    int main()
    {
       string a[100];
       int month[100];
       int n;
 
       ifstream f1("d:\name.txt");
        
            
 
            for(n=0; n!=8; n++)
               f1>>a[n]>>month[n];
        
            cout<<endl<<"Surnames  &  months:"<<endl<<endl;
 
            for(n=0; n!=8; n++)
               cout<<a[n]<<" "<<month[n]<<endl;
          
        
            string fakesur;
            int fm;
 
                for(int x=0; x!=8-1;x++)
                    for(n=0; n!=8-1;n++)
                        if (month[n+1]>month[n])
                        {
                            fm=month[n+1];
                            month[n+1]=month[n];
                            month[n]=fm;
                        
                            fakesur=a[n+1];
                            a[n+1]=a[n];
                            a[n]=fakesur;
                        }
 
            
cout<<endl<<endl<<"Surnames  &  months after bubble:"<<endl<<endl;
 
            for(n=7; n!=-1; n--)
               cout<<a[n]<<" "<<month[n]<<endl;
          
 
 
 
 
 
 
 
 
 
 
            system("PAUSE >> VOID");       
            return 0;
        
    }
Вот информация, которой заполняем
Код
Levchenko 4
Ivanov 6
Alekseev 12
Zelenskii 1
Rotaru 9
Chernov 1
Bondar 11
Kolomyets 3
Надеюсь на помощь=)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2013, 18:39
Ответы с готовыми решениями:

Сортировка по алфавиту
На вход подается некоторое количество описаний книг (автор, название,...

Сортировка по алфавиту
Не могу сообразить как по алфавиту отсортировать, что нужно изменить? Если...

Сортировка по алфавиту
Нужно ввести в программу данные о футболисте, отсортировать их по фамилии...

Сортировка по алфавиту
С клавиатуры ввести автора и название книги и посторить список по алфавиту.

Сортировка по алфавиту
Доброго времени суток. Имеется задача: Описать структуру с именем ORDER,...

10
castaway
Эксперт С++
4930 / 3037 / 453
Регистрация: 10.11.2010
Сообщений: 11,116
Записей в блоге: 10
Завершенные тесты: 1
10.09.2013, 19:40 2
А теперь, внимание, вопрос!
0
User409368
191 / 168 / 32
Регистрация: 09.09.2013
Сообщений: 524
10.09.2013, 19:44 3
Цитата Сообщение от Jamguranga Посмотреть сообщение
ifstream f1("d:\name.txt");
открывается файл d:\name.txt?

Меня терзают смутные сомнения что сочетание \n преобразуется в символ новой строки
0
castaway
Эксперт С++
4930 / 3037 / 453
Регистрация: 10.11.2010
Сообщений: 11,116
Записей в блоге: 10
Завершенные тесты: 1
10.09.2013, 19:45 4
Это конечно не ошибка, но просто не понятно что: system("PAUSE >> VOID");
0
Croessmah
++Ͻ
14630 / 8379 / 1582
Регистрация: 27.09.2012
Сообщений: 20,582
Записей в блоге: 2
Завершенные тесты: 1
10.09.2013, 19:47 5
Цитата Сообщение от castaway Посмотреть сообщение
Это конечно не ошибка, но просто не понятно что
Многие думают, что это перенаправление вывода вникуда
как в NUL
0
IGPIGP
10.09.2013, 19:55
  #6

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
как в NUL
В нал это самое безопасное. Милое дело. Потом хоть куда можно. :)

0
Jamguranga
1 / 1 / 1
Регистрация: 08.01.2013
Сообщений: 36
10.09.2013, 19:57  [ТС] 7
d:\name.txt поставил для примера, использовал текстовый файл, который закинул в файлы ресурсов, а вы уже придрались Вопрос - как сделать сортировку фамилий? Как-то через таблицу ascii делал, но было это давно и не помню где и как находил этот метод
0
castaway
Эксперт С++
4930 / 3037 / 453
Регистрация: 10.11.2010
Сообщений: 11,116
Записей в блоге: 10
Завершенные тесты: 1
10.09.2013, 19:59 8
Цитата Сообщение от Jamguranga Посмотреть сообщение
Вопрос - как сделать сортировку фамилий?
Цитата Сообщение от Jamguranga Посмотреть сообщение
Сделал всё, вплоть до сортировки по алфавиту
У меня, по-моему, лыжи что-то не едут..
0
Jamguranga
1 / 1 / 1
Регистрация: 08.01.2013
Сообщений: 36
10.09.2013, 20:03  [ТС] 9
Студенты, месяц у которых одинаков - должны быть отсортированы по алфавиту(их фамилии).
Цитата Сообщение от castaway Посмотреть сообщение
У меня, по-моему, лыжи что-то не едут..
нужно сделать сортировку фамилий тех студентов, месяц рождения которых совпадает, именно до этого момента я и выполнил задачу, всё же понятно
0
Pepsy
47 / 32 / 9
Регистрация: 05.01.2013
Сообщений: 307
10.09.2013, 20:10 10
Может поможет - http://www.cplusplus.com/reference/cstring/strcoll/
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7058 / 3360 / 455
Регистрация: 04.12.2011
Сообщений: 9,345
Записей в блоге: 5
10.09.2013, 22:10 11
Jamguranga, данные поместите в структуру:
напишите функцию сравнения возвращающую bool в которой отразите логику сравнения по двум параметрам и используйте в операторе if
Цитата Сообщение от Jamguranga Посмотреть сообщение
C++
1
if (fcomparer(stud[n+1], stud[n]))
соответственно stud это массив структур.
Вот пример с вектором таких структур и сортировкой sort из STL <algorithm>
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
]
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <windows.h>
using namespace std;
struct Student
{   
    string name;
    int month;    
    Student();
    Student(const string n, int month_);
    
     void show(){cout<<name<<" "<<month<<endl;};
     ~Student(){};
static  int Compirer(Student *one, Student *two);
};
 
int Student::Compirer(Student *one, Student *two){
    if(one->month == two->month)
        return (one->name.compare(two->name.c_str())>0)? 0:1;
    else
        return (one->month > two->month)? 0 : 1;
}
 
Student::Student()
{}
Student::Student(const string n, int id_):name(n), month(id_)
{}
 
int main(){
SetConsoleCP (1251); SetConsoleOutputCP (1251);
Student st("Vasya", 1);
Student st1("Basya", 2);
Student st2("Basya", 3);
Student st3("Alice", 3);
Student st4("Sonya", 4);
Student st5("Sonya", 2);
vector<Student*> stvec;
stvec.push_back(&st);
stvec.push_back(&st1);
stvec.push_back(&st2);
stvec.push_back(&st3);
stvec.push_back(&st4);
stvec.push_back(&st5);
size_t sz = stvec.size();
cout<<"\nВведено в порядке:"<<endl;
//---------------------------
for(size_t i = 0; i < sz; ++i) {
    stvec[i]->show();
}
sort(stvec.begin(), stvec.end(), &Student::Compirer);
cout<<"\nОтсортировано в порядке:"<<endl;
//---------------------------
for(size_t i = 0; i < sz; ++i) {
    stvec[i]->show();
}
cin.get();   
return 0;
}
1
10.09.2013, 22:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2013, 22:10

Сортировка по алфавиту
Ознакамливаюсь со структурами. Все прекрасно, осталось только отсортировать...

Сортировка по алфавиту
Ввести в компьютер такую информацию об автомобиле: фамилия и инициалы...

Сортировка по алфавиту
#include &lt;iostream&gt; #include&lt;cstring&gt; using namespace std; int main()...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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