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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
AmaTeRaTsu
94 / 27 / 2
Регистрация: 31.05.2011
Сообщений: 123
#1

Воспользовавшись записью СТУДЕНТ определите количество отличных оценок, полученных группой по всем предметам - C++

22.02.2012, 21:41. Просмотров 1084. Ответов 6
Метки нет (Все метки)

Привет. Прощу помочь с решением задачи на структуру. Я нашел тут на форуме схожую задачу, но она определяет количество отличников, а не отличных оценок. За любую помощь буду премного благодарен.

Вот код:
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
 
#include <iostream>                          //Подключаем библиотеку функций ввода-вывода
#include <string>
#include <conio.h>
 using namespace std;
struct STUDENT{
        char FIO[30]; 
        char group[8]; 
        int ocenki[5];
} ;
//Функция сортировки списка студентов по фамилии в алфавитном порядке
//Входной параметр S - массив записей о студентах
void sortM(STUDENT *S, int N)
{
        STUDENT tmp;                               //Хранит временно данные о студенте (используется в сортировке)
        bool sort = true;                          //Указывает нужно сортировать или нет
        int i;                                     //Счетчик цикла
    //Сортировка методом пузырька
        while (sort)                               //Цикл (пока нужно сортировать)
        {
                sort=false;                            //Делаем предположение, что сортировать уже не нужно
                                for (i=0; i < N-1; i++)                    //Просматриваем все записи минус один
                        if (strcmp(S[i].FIO,S[i+1].FIO)>0) //strcmp - функция сравнения строк, если первая больше второй
                        {
                                tmp=S[i];                      //Меняем эти строки местами
                                S[i]=S[i+1];
                                S[i+1]=tmp;
                                sort=true;                     //Считаем, что нужно дальше сортировать
                        }
        }                                          //Конец цикла (пока нужно сортировать)
}
 
//Функция определения студентов хотя бы с одной пятеркой
//Входной параметр S - массив записей о студентах
void student2(STUDENT *S,int N)
{
                STUDENT *T = new STUDENT[N];                             //Массив "отличников"
        int i,j;                                   //Переменные циклов
        int k = 0;                                 //Количество "отличников" (пока 0)
        for (i=0; i<N; i++)                       //Смотрим по всем записям
        {
                for (j=0; j<5; j++)                    //Смотрим все оценки студента
                        if (S[i].ocenki[j]==5)             //Если нашли пятерку
                        {
                                T[k]=S[i];                     //Добавляем запись о студенте в массив "отличников"
                                k++;                           //Увеличиваем число отличников на 1
                                break;                         //Выходим из цикла по оценкам
                        }
        }
        if (k>0)                                   //Если есть студенты с пятерками
        {
                cout<<endl<<"Studenti, imeuschie p9terki:"<<endl;  //Вывод "Студенты, имеющие пятерки"
 
                for (i=0; i<k; i++)                    //Выводим всех студентов с пятерками
                        cout<<T[i].FIO<<"    "<<T[i].group<<endl;
        }
        else                                       //Если студентов с пятерками не найдено
                cout<<endl<<"Net studentov s p9terkami"<<endl;  //Вывод "Нет студентов с пятерками"
        cout<<"---------------------------"<<endl;
        cout<<"Koli4estvo studentov polu4ivwie p9terki: "<<k;
 delete []T;
}
 
 
//Объявляем функции
//Главная функция
int main()
{
        int N = 0;
        setlocale(LC_CTYPE,"Rus");
cout << "Введите количество студентов: ";
                cin >> N;
 
                STUDENT *S = new STUDENT[N];
 
                //STUDENT M[N];//Массив записей о студентах (N элементов)
        int i,j;                                   //Переменные циклов
 
 
        cout<<"Vvedite informaciu o studentah:"<<endl;  //Вывод "Введите информацию о студентах"
 
        for (i=0; i<N; i++)                       //Цикл по всем записям
        {
                cout<<"Student "<<i+1<<":"<<endl;      //Вывод "Студент 1..10"
                cout<<"FIO: ";                         //Вывод "ФИО"
 
                cin>>S[i].FIO;                         //Ввод ФИО
                cout<<"Gruppa: ";                      //Вывод "Группа"
 
                cin>>S[i].group;                       //Ввод группы
                for (j=0; j<5; j++)                    //Цикл по пяти оценкам
                {
                        cout<<"Ocenka "<<j+1<<": ";        //Вывод "Оценка 1.. 5"
 
                        cin>>S[i].ocenki[j];               //Ввод j-ой оценки
                }
        }
 
 
 
 
        sortM(S,N);                                  //Вызов функции сортировки записей
                                                   //Вывод "Упорядоченный массив записей по ФИО"
        cout<<endl<<"Uporyadochennii massiv zapisei po FIO:"<<endl;
        for (i=0; i<N; i++)
                {//Цикл по всем 10 записям
                                                       //Вывод "ФИО, группа, оценки"
                cout<<S[i].FIO<<"    "<<S[i].group<<"    ";
                                for(int j=0;j<5;j++)
                                        cout<<S[i].ocenki[j]<<"  ";
                                cout<<endl;
                }
        student2(S,N);                               //Вызов функции определения студентов с пятерками
                delete []S;
                
 getch();
}
Вот скриншот не полного результата:
Миниатюры
Воспользовавшись записью СТУДЕНТ определите количество отличных оценок, полученных группой по всем предметам  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2012, 21:41     Воспользовавшись записью СТУДЕНТ определите количество отличных оценок, полученных группой по всем предметам
Посмотрите здесь:

Какое количество отличных оценок получено студентами по всем предметам - C++
Пожалуйста помогите! Программа работает, но только для одного студента. Как сделать для нескольких студентов? Задание: Опишите запись...

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

Известны оценки двух учеников по четырём предметам Определить сумму оценок каждого ученика - C++
Известны оценки двух учеников по четырём предметам Определить сумму оценок каждого ученика

Удалить студентов, у которых по всем предметам 2 - C++
Нужно удалить студентов, у которых по всем предметам 2. Затем вывести новый список на экран. Какие=-то косяки опять начались. Может...

Определите класс «Студент» - C++
Помогите пожалуйста с задачей Определите класс «Студент».Методы – перевод на следующий курс, выпуск, отчисление. Разработать...

Количество символов, отличных от латинских букв и пробелов - C++
Здравствуйте, нужно посчитать количество символов в строке, отличных от латинских букв и пробелов. Кажется, что ошибка закралась где-то в...

В целочисленном массиве определить количество элементов отличных от последнего - C++
Помогите,пожалуйста, с задачей. В первой строке вводится число N (1&lt;=N&lt;=20) - количество элементов одномерного массива Во второй...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
AmaTeRaTsu
94 / 27 / 2
Регистрация: 31.05.2011
Сообщений: 123
24.02.2012, 12:09  [ТС]     Воспользовавшись записью СТУДЕНТ определите количество отличных оценок, полученных группой по всем предметам #2
Неужели никто даже подсказку не даст.
AmaTeRaTsu
94 / 27 / 2
Регистрация: 31.05.2011
Сообщений: 123
25.02.2012, 14:45  [ТС]     Воспользовавшись записью СТУДЕНТ определите количество отличных оценок, полученных группой по всем предметам #3
Тему можно закрыть. Задачу решил.
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
25.02.2012, 17:13     Воспользовавшись записью СТУДЕНТ определите количество отличных оценок, полученных группой по всем предметам #4
AmaTeRaTsu, решили - выложите решение. Другим оно тоже может быть интересно.
AmaTeRaTsu
94 / 27 / 2
Регистрация: 31.05.2011
Сообщений: 123
26.02.2012, 18:14  [ТС]     Воспользовавшись записью СТУДЕНТ определите количество отличных оценок, полученных группой по всем предметам #5
silent_1991, хорошо. Извиняюсь.
Вот код:
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
 
#include <iostream>                          //Подключаем библиотеку функций ввода-вывода
#include <string>
#include <conio.h>
 using namespace std;
struct STUDENT{
        char FIO[30]; 
        char group[8]; 
        int ocenki[5];
} ;
//Функция сортировки списка студентов по фамилии в алфавитном порядке
//Входной параметр S - массив записей о студентах
void sortM(STUDENT *S, int N)
{
        STUDENT tmp;                               //Хранит временно данные о студенте (используется в сортировке)
        bool sort = true;                          //Указывает нужно сортировать или нет
        int i;                                     //Счетчик цикла
    //Сортировка методом пузырька
        while (sort)                               //Цикл (пока нужно сортировать)
        {
                sort=false;                            //Делаем предположение, что сортировать уже не нужно
                                for (i=0; i < N-1; i++)                    //Просматриваем все записи минус один
                        if (strcmp(S[i].FIO,S[i+1].FIO)>0) //strcmp - функция сравнения строк, если первая больше второй
                        {
                                tmp=S[i];                      //Меняем эти строки местами
                                S[i]=S[i+1];
                                S[i+1]=tmp;
                                sort=true;                     //Считаем, что нужно дальше сортировать
                        }
        }                                          //Конец цикла (пока нужно сортировать)
}
 
//Функция определения студентов хотя бы с одной пятеркой
//Входной параметр S - массив записей о студентах
void student2(STUDENT *S,int N)
{
                STUDENT *T = new STUDENT[N];                             //Массив "отличников"
        int i,j, schet=0;                                   //Переменные циклов
        int k = 0;                                 //Количество "отличников" (пока 0)
        for (i=0; i<N; i++)                       //Смотрим по всем записям
        {
                for (j=0; j<5; j++)                    //Смотрим все оценки студента
                        if (S[i].ocenki[j]==5)             //Если нашли пятерку
                        {
                                T[k]=S[i];                     //Добавляем запись о студенте в массив "отличников"
                                k++;                           //Увеличиваем число отличников на 1
                                break;                         //Выходим из цикла по оценкам
                        }
                 for (j=0; j<5; j++)                    //добавил чтоб найти количество пятерок
                        if (S[i].ocenki[j]==5)            
                        schet++;
        }
        if (k>0)                                   //Если есть студенты с пятерками
        {
                cout<<endl<<"Studenti, imeuschie p9terki:"<<endl;  //Вывод "Студенты, имеющие пятерки"
 
                for (i=0; i<k; i++)                    //Выводим всех студентов с пятерками
                        cout<<T[i].FIO<<"    "<<T[i].group<<endl;
        }
        else                                       //Если студентов с пятерками не найдено
                cout<<endl<<"Net studentov s p9terkami"<<endl;  //Вывод "Нет студентов с пятерками"
        cout<<"---------------------------"<<endl;
        cout<<"Koli4estvo studentov polu4ivwie p9terki: "<<k<<endl;
        cout<<"Koli4estvo p9terok polu4ennoi gruppoi: "<<schet<<endl;
 delete []T;
}
 
 
//Объявляем функции
//Главная функция
int main()
{
        int N = 0;
        setlocale(LC_CTYPE,"Rus");
cout << "Введите количество студентов: ";
                cin >> N;
 
                STUDENT *S = new STUDENT[N];
 
                //STUDENT M[N];//Массив записей о студентах (N элементов)
        int i,j;                                   //Переменные циклов
 
 
        cout<<"Vvedite informaciu o studentah:"<<endl;  //Вывод "Введите информацию о студентах"
 
        for (i=0; i<N; i++)                       //Цикл по всем записям
        {
                cout<<"Student "<<i+1<<":"<<endl;      //Вывод "Студент 1..10"
                cout<<"FIO: ";                         //Вывод "ФИО"
 
                cin>>S[i].FIO;                         //Ввод ФИО
                cout<<"Gruppa: ";                      //Вывод "Группа"
 
                cin>>S[i].group;                       //Ввод группы
                for (j=0; j<5; j++)                    //Цикл по пяти оценкам
                {
                        cout<<"Ocenka "<<j+1<<": ";        //Вывод "Оценка 1.. 5"
 
                        cin>>S[i].ocenki[j];               //Ввод j-ой оценки
                }
        }
 
 
 
 
        sortM(S,N);                                  //Вызов функции сортировки записей
                                                   //Вывод "Упорядоченный массив записей по ФИО"
        cout<<endl<<"Uporyadochennii massiv zapisei po FIO:"<<endl;
        for (i=0; i<N; i++)
                {//Цикл по всем 10 записям
                                                       //Вывод "ФИО, группа, оценки"
                cout<<S[i].FIO<<"    "<<S[i].group<<"    ";
                                for(int j=0;j<5;j++)
                                        cout<<S[i].ocenki[j]<<"  ";
                                cout<<endl;
                }
        student2(S,N);                               //Вызов функции определения студентов с пятерками
                delete []S;
                
 getch();
}
На первой картинке: Указано что добавил чтоб найти кол-во пятерок.
На второй картинке: Результат

P.S. Спасибо одному пользователю тут, не знаю кто, именно благодаря его коду смог довести все до ума
Миниатюры
Воспользовавшись записью СТУДЕНТ определите количество отличных оценок, полученных группой по всем предметам   Воспользовавшись записью СТУДЕНТ определите количество отличных оценок, полученных группой по всем предметам  
agent008
1 / 1 / 0
Регистрация: 15.03.2014
Сообщений: 118
15.03.2014, 19:35     Воспользовавшись записью СТУДЕНТ определите количество отличных оценок, полученных группой по всем предметам #6
Спасибо работает, но вместо #include <string> надо #include <cstring>
А то не компилятор не узнает функцию strcmp
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2014, 19:43     Воспользовавшись записью СТУДЕНТ определите количество отличных оценок, полученных группой по всем предметам
Еще ссылки по теме:

Определить произведение отрицательных элементов массива и количество отличных от 5 - C++
Здравствуйте. Помогите, пожалуйста. 1. Дан массив, состоящий из 10 элементов (элементы массива задаются случайным образом). Определить...

Определить количество элементов массива, отличных от последнего элемента и их суммы - C++
Дан массив Р(10). Определить количество элементов , отличных от последнего элемента и их суммы 2 -4 5 6 2 -3 2 10 -2 2.

Подсчитать в вводимой строке количество введенных символов, отличных от пробела. - C++
С клавиатуры вводятся символы до тех пор, пока не встретится конец предложения. Концом предложения считать символы : ! ?. Подсчитать...

Определить количество неудолетворительных оценок - C++
Уважаемые Форумчане помогите перевести задачу из язика Pascal в язик С++. Вот условие:Определить кол-во неудолитворительных оценок за...

Реализовать функцию без параметров, определяющую количество символов, отличных от пробела - C++
Задача: Описать функцию next() без параметров, которая считывает с клавиатуры первый символ, отличный от пробела, и объявляет его своим...


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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
15.03.2014, 19:43     Воспользовавшись записью СТУДЕНТ определите количество отличных оценок, полученных группой по всем предметам #7
agent008, string и cstring - это разные заголовочные файлы. В файле string расположено объявление библиотечного класса C++ std::string (строго говоря, std::string - всего лиш typedef для std::basic_string<char>, но это сейчас не важно), а в cstring - функции для работы с C-строками (символьными нуль-терминированными массивами). Скорее всего, у автора кода заголовочный файл string включает внутри себя и заголовок cstring, поэтому в результате препроцессирования в исходном коде оказывалось содержимое обоих файлов, но в общем случае стандартом не определяется, какие стандартные заголовочные файлы должны включаться в другие стандартные заголовочные файлы, поэтому правильным решением будет подключать все файлы, символы из которых вы намереваетесь использовать. Даже если вы наверняка знаете, что в вашей реализации стандартной библиотеки файл X включает файл Y, поэтому чтобы пользоваться функционалом из файлов X и Y, достаточно подключить только X, совершенно необязательно, что такой код будет компилироваться другим компилятором с другой реализацией стандартной библиотеки, а значит, такой код становится теоретически непереносимым, чего стоит по возможности избегать.
Yandex
Объявления
15.03.2014, 19:43     Воспользовавшись записью СТУДЕНТ определите количество отличных оценок, полученных группой по всем предметам
Ответ Создать тему
Опции темы

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