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

Найти студентов имеющих средний балл больше заданного - C++

Восстановить пароль Регистрация
 
Илья555
-8 / 0 / 0
Регистрация: 24.04.2011
Сообщений: 76
22.03.2016, 13:14     Найти студентов имеющих средний балл больше заданного #1
Доброго времени суток!
Необходимо решить задание 2мя способами. С помощью классов и с помощью switch
Вывести фамилии, имена, отчества и отметки по физике студентов, имеющих средний балл, больше чем 4,5.

101 Попов Виктор Алексеевич 1995 М 55545 45344 43544 2000
101 Алексеев Игорь Алексеевич 1994 М 54453 45533 33354 1800
102 Иванов Игорь Олегович 1995 М 44435 44444 53334 1900
104 Петрова Ольга Дмитриевна 1996 Ж 55545 43544 55544 2000
103 Круглова Ирина Ивановна 1994 Ж 55434 43234 55433 1900
104 Сидоров Григорий Ильич 1993 М 55455 35435 23543 1800
101 Иванников Олег Олегович 1995 М 55552 43533 45453 1900
104 Кириллов Иван Валерьевич 1995 Ж 55554 43433 55555 1900
102 Зенцов Роман Владимирович 1994 Ж 33335 45343 54545 1900
105 Зайцев Павел Дмитриевич 1995 М 55555 33333 44444 2000
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2016, 13:14     Найти студентов имеющих средний балл больше заданного
Посмотрите здесь:

C++ В группе студентов определи средний балл каждого за последнюю сессию, распечатать Ф.И.О. студентов со средним баллом не меньше 4, остальных рассор
C++ Структура: вывод на дисплей фамилии и номеров групп студентов, если средний балл выше 4
C++ Определить количество студентов, у которых средний балл превышает заданное пользователем значени
C++ Структура "Студент". Вычислить средний балл группы и распечатать список студентов с низким средним баллом
C++ Распечатать список студентов группы имеющих средний балл выше общего среднего балла
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
22.03.2016, 14:12
  #2

Не по теме:

Цитата Сообщение от Илья555 Посмотреть сообщение
С помощью классов и с помощью switch
Это все равно, что "Люблю одну дивчину и с сыром пироги".
Т.е. классы к switch имеют такое же отношение, как дивчина к пирогам.

Илья555
-8 / 0 / 0
Регистрация: 24.04.2011
Сообщений: 76
22.03.2016, 14:18  [ТС]     Найти студентов имеющих средний балл больше заданного #3
Я имел ввиду требуется написать 2 программы двумя способами
-ДоМоВоЙ-
 Аватар для -ДоМоВоЙ-
117 / 116 / 46
Регистрация: 19.01.2016
Сообщений: 434
Записей в блоге: 1
22.03.2016, 14:26     Найти студентов имеющих средний балл больше заданного #4
Цитата Сообщение от Илья555 Посмотреть сообщение
Вывести фамилии, имена, отчества и отметки по физике студентов, имеющих средний балл, больше чем 4,5.
Помимо этого я так полагаю, надо еще и пол и год рождения выводить? А цифры спереди что означают? Студентов нужно будет вводить с клавиатуры, или выводить из данного списка? Предмет физика еще смущает... Т.е нужно еще сделать выбор, по какому предмету выводить оценки??? Или как понять???
Илья555
-8 / 0 / 0
Регистрация: 24.04.2011
Сообщений: 76
22.03.2016, 14:41  [ТС]     Найти студентов имеющих средний балл больше заданного #5
-ДоМоВоЙ-, первые цифры это группы. Студенты из этого списка. Требуется вывести ФИО и отметки по физике. Ну да, требуется сортировка по предмету и вывод тех, у кого средний балл по физике больше 4,5

Добавлено через 2 минуты
Тут просто не смог правильно форматно вывести.. Эти числа, состоящие из 5 цифр это разные предметы. К примеру первые 5 это математика, следующие 5 цифр это литература, а последние 5 это физика
Nice-crazy
5 / 5 / 2
Регистрация: 10.03.2013
Сообщений: 125
22.03.2016, 17:16     Найти студентов имеющих средний балл больше заданного #6
Так давай хоть свои заготовки,тебе что с 0 будут это писать?
Илья555
-8 / 0 / 0
Регистрация: 24.04.2011
Сообщений: 76
22.03.2016, 23:03  [ТС]     Найти студентов имеющих средний балл больше заданного #7
-ДоМоВоЙ-, у Вас получиться сделать это задание?
-ДоМоВоЙ-
 Аватар для -ДоМоВоЙ-
117 / 116 / 46
Регистрация: 19.01.2016
Сообщений: 434
Записей в блоге: 1
22.03.2016, 23:20     Найти студентов имеющих средний балл больше заданного #8
Цитата Сообщение от Илья555 Посмотреть сообщение
-ДоМоВоЙ-, у Вас получиться сделать это задание?
Если время позволит...
-ДоМоВоЙ-
 Аватар для -ДоМоВоЙ-
117 / 116 / 46
Регистрация: 19.01.2016
Сообщений: 434
Записей в блоге: 1
23.03.2016, 01:21     Найти студентов имеющих средний балл больше заданного #9
Илья555, Такой оформление удовлетворяет? Не до конца отформатировал еще... Оценки тоже пока произвольные...
Миниатюры
Найти студентов имеющих средний балл больше заданного  
Илья555
-8 / 0 / 0
Регистрация: 24.04.2011
Сообщений: 76
23.03.2016, 06:51  [ТС]     Найти студентов имеющих средний балл больше заданного #10
Конечно устраивает
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2016, 15:07     Найти студентов имеющих средний балл больше заданного
Еще ссылки по теме:

C++ Файлы и структуры. Найти студентов, имеющих средний балл не ниже заданного
C++ Вывести студентов, имеющих средний балл от 3 до 4.5
C++ Определить количество студентов, у которых средний балл превышает заданное пользователем значение

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

Или воспользуйтесь поиском по форуму:
-ДоМоВоЙ-
 Аватар для -ДоМоВоЙ-
117 / 116 / 46
Регистрация: 19.01.2016
Сообщений: 434
Записей в блоге: 1
23.03.2016, 15:07     Найти студентов имеющих средний балл больше заданного #11
Илья555, Постарался все подробно описать... Список студентов представлен в виде файлов. Файлы должны находиться в корне программы...
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
#include <iomanip>//для setw()
#include "iostream"//для ввода и вывода
#include "fstream"//для открытия файла
#include <conio.h>//для getch
 
using namespace std;
 
struct student 
{
    char suname[20];//фамилия студента
    char name[20];//фамилия студента
    char otch[20];//фамилия студента
    int group; //номер группы
    int  ses[5]; //оценки
};
double sredniy(student *,int n,double *sr);   //прототип функции для нахождения только среднего бала
double sort(student *,int n,double *sr);    // прототип функции сортировки по среднему балу
double individum(student *,int n,double *sr); // прототип функции вывода студентов у которых бал 4.5 и выше
 
int main()
{
    setlocale(LC_CTYPE,"Russian"); //русский шрифт в консоле
    const int n=10;//константная переменная с количеством студентов
    int  i, j,menu; //обьявляем переменные
    double sr[10];//массив со средними балами студентов
    char vib;// переменная для вывода среднего бала в case 1
    student *stud1 = new student [n]; //выделение динамической памяти под массив структур
 
    ifstream instr_econ("students_econ.txt");   //открытие файла для ввода
    ifstream instr_fiz("students_fiz.txt");   //открытие файла для ввода
    ifstream instr_him("students_him.txt");   //открытие файла для ввода
    if(!instr_econ||!instr_fiz||!instr_him) //если файлы не найдены тогда....
    {
    cout<<"Files can not be open\n"; //выводим сообщение
    return 0; //выход из программы
    };   
    //Меню
    one:cout<<"/////////////////////////////////////////////////"<<endl<<endl;
    cout<<"                   МЕНЮ"<<endl;
    cout <<"\n Выберете предмет для вывода студентов: ";
    cout <<"\n\n 1 - Экономика: ";
    cout <<"\n 2 - физика ";
    cout <<"\n 3 - Химия "<<endl<<endl<<endl;
    cout<<"/////////////////////////////////////////////////"<<endl;
    menu = _getch();//функция ввода без Enter
    switch(menu){
 
        case 49:
    //заполнение массива считыванием из файла students_econ
    cout << endl << "Вывод студентов по предмету Экономика: " << endl << endl;
    cout << endl << "     Студент  \t               Группа\t      Оценки" << endl << endl;
    for(i = 0; i < n; i++)
    { 
    instr_econ >> stud1[i].suname >> stud1[i].name >>stud1[i].otch >> stud1[i].group;//получение из файла информации
    cout << stud1[i].suname<< " " <<stud1[i].name<< ' ' <<stud1[i].otch << setw(4)<<"\t" << stud1[i].group; //отображение на экране
    for(j = 0; j < 5; j++)//цикл по оценкам
    {
    instr_econ >> stud1[i].ses[j];
    cout <<setw(4)<< "    " << stud1[i].ses[j];
    }   
    cout << endl;
    }  
    cout << endl;
    cout<<"\nВsвести студентов с подсчетом средних баллов?(y/n): ";
    cin>>vib;
    if (vib=='y')goto go;// Если у(да), то переходи на go:
    instr_econ.close();break;//закрыли файл instr_econ
 
        case 50:
    //заполнение массива считыванием из файла students_fiz
    cout << endl << "Вывод студентов по предмету Физика: " << endl << endl;
    cout << endl << "     Студент  \t               Группа\t      Оценки" << endl << endl;
    for(i = 0; i < n; i++)
    { 
    instr_fiz >> stud1[i].suname >> stud1[i].name >>stud1[i].otch >> stud1[i].group;
    cout << stud1[i].suname<< " " <<stud1[i].name<< ' ' <<stud1[i].otch << setw(4)<<"\t" << stud1[i].group; 
    for(j = 0; j < 5; j++)
    {
    instr_fiz >> stud1[i].ses[j];
    cout <<setw(4)<< "    " << stud1[i].ses[j];
    }   
    cout << endl;
    }  
    cout << endl;
    cout<<"Вsвести студентов с подсчетом средних баллов?(y/n): ";
    cin>>vib;
    if (vib=='y')goto go;
    instr_fiz.close();break;
 
        case 51:
    //заполнение массива считыванием из файла students_him
    cout << endl << "Вывод студентов по предмету Химия: " << endl << endl;
    cout << endl << "     Студент  \t               Группа\t      Оценки" << endl << endl;
    for(i = 0; i < n; i++)
    { 
    instr_him >> stud1[i].suname >> stud1[i].name >>stud1[i].otch >> stud1[i].group;
    cout << stud1[i].suname<< " " <<stud1[i].name<< ' ' <<stud1[i].otch << setw(4)<<"\t" << stud1[i].group; 
    for(j = 0; j < 5; j++)
    {
    instr_him >> stud1[i].ses[j];
    cout <<setw(4)<< "    " << stud1[i].ses[j];
    }   
    cout << endl;
    }  
    cout << endl;
    cout<<"Вsвести студентов с подсчетом средних баллов?(y/n): ";
    cin>>vib;
    if (vib=='y')goto go;
    instr_him.close();break;
 
    go:cout << endl << "Вывод студентов по возрастанию среднего балла" << endl;
    cout << endl << "     Студент  \t               Группа\t      Оценки\t        Средний бал" << endl << endl;
    sort(stud1, n,sr); //вызываем функцию сортировки
    cout <<endl;
 
    cout << endl << "Студенты у которых средний бал превышает 4.5" << endl;
    cout << endl << "     Студент  \t               Группа\t      Оценки"<<endl;
    sredniy(stud1, n,sr); //вызываем функцию вычмсления среднего бала
    individum(stud1, n,sr); //вызываем функцию для вывода студентов у которых бал 4.5 и выше
 
    delete [] stud1; //очищаем память
    system("pause >> null"); //ждем пока пользователь нажмет любую клавишу
    return 0; //выход с программы
        default :
            cout<<"ОШИБКА! Не корректный ввод!"<<endl;goto one;break;
    }
}
 
//сортировку делаеи спомощью "Пузырьковой сортировки"
double sort(student *gr, int n,double *sr)
{
    double s; //перемееная для подсчета суммы балов каждого студента
    double *avg = new double [n]; //выделяем память под массив хранящщего средние балы каждого студента
    
    //находим средний бал каждого студента
    for(int i = 0; i < n; i++)  
    {
     s = 0.;
    for(int j = 0; j < 5; j++){
     s += gr[i].ses[j];
     avg[i] = s / 5;
     sr[i]=avg[i];}
    }
 
    bool flag = true; //обьявляем булевую переменную и даем есть значение "истина"
    while(flag) //пока "истина" делаем
    {
     flag = false;  //устанавливаем переменную в "ложь
     for(int i = 0; i < n - 1; ++i)
    {
    if(avg[i] > avg[i + 1]) //если элемент массива большн следующий элемент, тогда
    {
    //меняем массивы в структуре местами
    student x = gr[i];
    gr[i] = gr[i + 1];
    gr[i + 1] = x;
    //а также меняем местами и элементы в массиве средних оценок 
    double temp = avg[i];
    avg[i] = avg[i + 1];
    avg[i + 1] = temp;
    flag = true;} //уснанавлюем в "истина"
    }
    }
 
    //выводим на экран отсортированную структуру
    for(int i = 0; i < n; i++)
    { 
     cout << gr[i].suname << " " <<gr[i].name << ' ' <<gr[i].otch << setw(4)<<"\t" << gr[i].group;  
     for(int j = 0; j < 5; j++)
    {
     cout << "    " << gr[i].ses[j];
    }
     cout << "        " << avg[i]; //выводим на экран средний бал
     cout << endl;
    }  
    delete [] avg; //освобождаем память
    return 0;
}
 //Находим только средний бал
 double sredniy(student *gr, int n,double *sr)
{
    double s; //перемееная для подсчета суммы балов каждого студента
    double *avg = new double [n]; //выделяем память под массив хранящщего средние балы каждого студента
    
    //находим средний бал каждого студента
    for(int i = 0; i < n; i++)  
    {
     s = 0.;
    for(int j = 0; j < 5; j++){
     s += gr[i].ses[j];
     avg[i] = s / 5;
     sr[i]=avg[i];}
    }
 
    delete [] avg; //освобождаем память
    return 0;
}
//ищем студентов с балом 4.5 и выше
double individum(student *gr, int n,double *sr)
{
    int  z = 0; //объявляем переменyю
    for(int i = 0; i < n; i++)
    {
    if (sr[i]>4.5){ //если бал 4.5 и выше тогда...
    cout <<"\n"<< gr[i].suname << " " <<gr[i].name << ' ' <<gr[i].otch << setw(4)<<"\t" << gr[i].group;//выводи этих студентов
    for(int j = 0; j < 5; j++)
    cout <<setw(4)<< " " << gr[i].ses[j];
    z++;}//подсчитываем количество студентов с балом 4.5 и выше
    }
    if (z == 0) //если  нет, тогда ....
    {
    cout <<endl<<"По данному предмету нет студентов с баллом выше 4.5" <<endl; //выводим сообщение об этом
    }
    return 0;
}
Вложения
Тип файла: txt students_econ.txt (469 байт, 6 просмотров)
Тип файла: txt students_fiz.txt (469 байт, 6 просмотров)
Тип файла: txt students_him.txt (469 байт, 5 просмотров)
Yandex
Объявления
23.03.2016, 15:07     Найти студентов имеющих средний балл больше заданного
Ответ Создать тему
Опции темы

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