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

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

Войти
Регистрация
Восстановить пароль
 
VALIDOL4IK
11 / 2 / 5
Регистрация: 09.09.2011
Сообщений: 60
#1

Упорядочить записи структуры по фамилии - C++

18.12.2013, 13:33. Просмотров 755. Ответов 2
Метки нет (Все метки)

Помогите сделать пожалуйста. Дана структура. Нужно сделать упорядочивание по фамилии [name]. Заранее, спасибо.
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 <string>
using namespace std; 
 
struct STUDENT // структура STUDENT
{ 
    string name; //фамилия
    int group; 
    float ses[10];
    float sr;
};
 
int main() 
{   
    setlocale(0,"rus");// подключение русского языка
    const int size = 3; // количество студентов ИЗМЕНИТЬ НА 10!
    STUDENT stud1[size]; // массив 
    int i, j;  
    int n = 0; // счётчик студентов
    int count = 0; // счётчик студентов с плохими отметками 
                   // если он равен количеству студентов значит  
                   // хорошистов нет
    const int o = 3; //количество оценок
    
 
    for ( i = 0; i < size; i++)  // ввод информации
    { 
        cout << "Введите фамилию студента " << endl; 
        cin >> stud1[n].name; 
        cout << "Введите номер группы " << endl; 
        cin >> stud1[n].group; 
        cout << "Введите 3 оценки " << endl; 
        for (int i = 0; i < o; i++) 
        cin >> stud1[n].ses[i]; 
        n++;
        
    } 
   cout<<"Хорошисты"<<endl;
   
    for ( i = 0; i < size; i++) 
    {
        for (j = 0; j < 3; j++) 
            stud1[n].sr += stud1[i].ses[j]; 
          
            if(stud1[n].sr / o > 8.0) // условие хорошиста
            { 
                cout << stud1[i].name << endl; // вывод хорошистов
                cout << stud1[i].group << endl;
                cout << stud1[n].sr/o <<endl;
            }  
            else  
                count++;
 
            stud1[n].sr = 0;
        }  
    if(count == size) 
        cout << "Такие студенты отсутствуют " << endl; 
 
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2013, 13:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Упорядочить записи структуры по фамилии (C++):

Ввести массив записей, который содержит фамилии сотрудников и адреса. Записи упорядочить по адресам. - C++
Очень нужно написать задачу!Пожалуйста помогите):) Ввести массив записей, который содержит фамилии сотрудников и адреса. Записи...

Получить из БД фамилии и упорядочить их - C++
Задача такая в БД упорядочить фамилии по алфавиту. То бишь есть БД в ней даны фамилии 5 - 10 штук и их надо упорядочить по алфавиту...

Работа с символьными данными. Упорядочить фамилии по алфавиту - C++
Нужна помощь. помогите решить задачу) УСЛОВИЕ: Список фамилий вводится через запитую в виде строки. Упорядочить фамилии по алфавиту.

Структуры. Вывести фамилии студентов. - C++
Вывести фамилии студентов, балл по определенному предмету которых превышает средний балл по предмету на 0.5 балла

Структуры. По фамилии выдать информацию о читателе библиотеки - C++
Не могу победить программу.Нужно дописать её.Не хватает чего-то. Задача Там в Файле все указано. #include &lt;iostream&gt; ...

Структуры: вывести фамилии трех лучших учеников данного класса - C++
Анкета школьника включает в себя Ф.И.О., номер школы, номер класса и оценки по пяти предметам. Вывести фамилии трех лучших учеников данного...

2
egor2116
339 / 370 / 42
Регистрация: 20.01.2013
Сообщений: 1,126
18.12.2013, 15:15 #2
Нужно сделать упорядочивание по фамилии
Ну как то так(не проверял)
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
#include <iostream>
#include <algorithm>
 
const size_t sizeSession = 3;
 
struct STUDENT // ñòðóêòóðГ* STUDENT
{ 
    std::string name; //ГґГ*ìèëèÿ
    int group; 
    float ses[sizeSession];
    float sr;
};
 
void input(STUDENT & st)
{
  std::cout << "Input name: "; std::cin >> st.name;
  std::cout << "Input group: "; std::cin >> st.group;
  std::cout << "Input ses: " << std::endl;
  for(int i = 0; i < sizeSession; ++i)
     std::cin >> st.ses[i];
 
  std::cout << "Input sr: "; std::cin >> st.sr;
}
 
void print(STUDENT & st)
{
  std::cout << "Name: " << st.name;
  std::cout << "Group: " << st.group;
  std::cout << "Ses: ";
  for(int i = 0; i < sizeSession; ++i)
     std::cout << st.ses[i] << " ";
  std::cout << std::endl;
 
  std::cout << "Sr: " << st.sr;
}
 
 
bool valid(STUDENT & st1, STUDENT & st2)
{
     return st1.name < st2.name; 
}
 
int main()
{   
    const size_t SIZE = 3;
    STUDENT  stud[SIZE];
    std::for_each(stud, stud + SIZE, input);
    std::sort(stud, stud + SIZE, valid);
    std::for_each(stud, stud + SIZE, print);
        
    system("PAUSE");
    return 0;
}
0
VALIDOL4IK
11 / 2 / 5
Регистрация: 09.09.2011
Сообщений: 60
19.12.2013, 13:33  [ТС] #3
Доделал. Может кому-нибудь понадобится.
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
#include <iostream>
#include <string>
using namespace std; 
 
struct STUDENT // структура STUDENT
{ 
    char name[40]; 
    int group; 
    float ses[10];
    float sr;
};
 
int main() 
{   
    setlocale(0,"rus");// подключение русского языка
    const int size = 2; // количество студентов ИЗМЕНИТЬ НА 10!
    STUDENT stud1[size],tmp; // массив 
    int i, j;  
    int n = 0; // счётчик студентов
    int count = 0; // счётчик студентов с плохими отметками 
                   // если он равен количеству студентов значит  
                   // хорошистов нет
    const int o = 3; //количество оценок
    
 
    for ( i = 0; i < size; i++)  // ввод информации
    { 
        cout << "Введите фамилию студента " << endl; 
        cin >> stud1[n].name; 
        cout << "Введите номер группы " << endl; 
        cin >> stud1[n].group; 
        cout << "Введите 3 оценки " << endl; 
        for (int i = 0; i < o; i++) 
        cin >> stud1[n].ses[i]; 
        n++;
        
    } 
//сортировка
for (i=0; i<n; i++){
for (j=n-1; j>i; j--){
    if (strcmp(stud1[j-1].name, stud1[j].name)>0){
        tmp=stud1[j];
        stud1[j]=stud1[j-1];
        stud1[j-1]=tmp;
    }
}
}
   cout<<"Хорошисты"<<endl;
   
    for ( i = 0; i < size; i++) 
    {
        for (j = 0; j < 3; j++) 
            stud1[n].sr += stud1[i].ses[j]; 
          
            if(stud1[n].sr / o > 8.0) // условие хорошиста
            { 
                cout << stud1[i].name << endl; // вывод хорошистов
                cout << stud1[i].group << endl;
                cout << stud1[n].sr/o <<endl;
            }  
            else  
                count++;
 
            stud1[n].sr = 0;
        }  
    if(count == size) 
        cout << "Такие студенты отсутствуют " << endl; 
 
 
    return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2013, 13:33
Привет! Вот еще темы с ответами:

Упорядочить элементы структуры - C++
Необходимо составить структуру, сделать сортировку по признаку, по убыванию или возрастанию... Вот код: #include &quot;stdafx.h&quot; #include...

задача стоит так : Список фамилий вводится через запятую в виде строки. Упорядочить фамилии по алфавиту - C++
Вот код : #include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;conio.h&gt; #include &lt;iostream&gt; using namespace std; int Fam...

Структуры: Сведения об автомобиле состоят из номера, марки, фамилии владельца, признака прохождения техосмотра - C++
Помогите решить структурную задачу Сведения об автомобиле состоят из номера, марки, фамилии владельца, признака прохождения техосмотра....

Упорядочить номера маршрутов по возрастанию (структуры) - C++
Помогите пожалуйста как упорядочить номера маршрутов по возрастанию?? #include &lt;iostream&gt; #include &lt;string.h&gt; #include...


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

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

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