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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти ошибку в реализации метода Гаусса http://www.cyberforum.ru/cpp-beginners/thread1691569.html
Нужно решить матрицу методом гауза вот код: #include "iostream" #include "math.h" #include "stdlib.h" #include "locale.h" using namespace std;
C++ Ошибка компиляции undefined reference to `Polygon::Polygon(Point const*, int)' #include "Polygon.h" #include <iostream> #include <iomanip> using std::cout; using std::endl; int main() { http://www.cyberforum.ru/cpp-beginners/thread1691565.html
Помогите сделать функцию рандомного заполнения матрицы C++
Из входного потока вводится непрямоугольная матрица целых чисел , i=1,...j=1,....,ni. Значения m и ni заранее неизвестны и вводятся из входного потока. Сформировать ВЕКТОР {bi}, i=1,..,m, i-ый жлемент которого РАВЕН количеству элементов i-ой строки матрицы, отсутсвующих в (i+1)-ой строке (Bm равен количеству элементов m-ой строки матрицы, отсутсвующих в первой строке). Исходную матрицу и...
Алгоритмы сортировки и поиска C++
Выполнить сортировку целочисленного массива (поиск в массиве) из n элементов. Алгоритм сортировки (поиска) оформить в виде функции.Сортировка методом бинарной вставки с использованием рабочего массива. Помогите плиз написать прогу))))
C++ Разместить все положительные элементы в левую верхнюю область матрицы, а неположительные - в правую нижнюю http://www.cyberforum.ru/cpp-beginners/thread1691504.html
Ребят помогите написать прогу- Разместить все положительные элементы в левую верхнюю область матрицы (заполняя ими матрицу по столбцам сверху вниз), а неположительные – в правую нижнюю область. на C++
C++ Поиск в списке #include <iostream> #include <fstream> #include <cstring> #include <windows.h> using namespace std; struct element{ int id; char lastname; подробнее

Показать сообщение отдельно
-ДоМоВоЙ-
 Аватар для -ДоМоВоЙ-
117 / 116 / 46
Регистрация: 19.01.2016
Сообщений: 434
Записей в блоге: 1
23.03.2016, 15:07     Найти студентов имеющих средний балл больше заданного
Илья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 просмотров)
 
Текущее время: 09:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru