Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Вариант на С++ програма за моделиране на оценки на студенти.
- // Автор: Илиян Стоянов, СИТ, 6а група , ф.номер: 17621763
- /*В програмата са използвани два двумерни масива с данни за студенти :фак. номер и 6 оценки (от 2 до 6) по дисциплини и среден успех и стипендия.
- Дефинира се функция за въвеждане на брой студенти (с валидация) и съхраняване на данните за всеки (ф. номер и 6 оценки).
- Оценките за всяка учебна дисциплина се генерират програмно.
- Средния успех се изчислява от шестте оценки.
- Стипендията се определя от средния успех
- На екрана се извеждат таблично данните за всеки студент от подгрупата.
- Функцията се извиква чрез избор от меню
- */
- #include <iostream>
- #include <Windows.h>
- #include <string>
- #include <iomanip>
- #include <conio.h>
- using namespace std;
- void slowmotioon(string);
- void about_author();
- void input_students(int **, size_t);
- void output_students(int **, size_t);
- void weak_students(int **, size_t);
- void get_amendment_students(int **, size_t);
- void sort_students(int **, size_t);
- int main() {
- // setlocale(LC_ALL, "Bulgarian"); // Функция за текст на кирилица
- SetConsoleOutputCP(1251);
- system("mode 110,40"); // За размер на прозореца на екрана
- system("color 34"); // Задаване на цвят на фона и текста
- setlocale(LC_ALL, "Bulgarian"); // Функция за текст на кирилица
- system("mode 110,40"); // За размер на прозореца на екрана
- system("color 34"); // Задаване на цвят на фона и текста
- cout << "\n\t\t *************************************************** ";
- cout << "\n\t\t * * ";
- slowmotioon("\n\t\t * Програма за прогнозиране и актуализация на * ");
- slowmotioon("\n\t\t * оценки от сесия на студенти от виртуална * ");
- slowmotioon("\n\t\t * подгрупа. * ");
- cout << "\n\t\t * * ";
- cout << "\n\t\t *************************************************** ";
- Sleep(3000); // Закъснение 3 секунди за прочитане на текста
- system("cls");
- // Избор за менюто
- int choice;
- // Брой на студенти
- size_t students_number;
- cout << "Enter students number";
- cin >> students_number;
- // Деклариране на масив
- int **students = new int*[students_number];
- for (size_t i = 0; i < students_number; i++)
- students[i] = new int[9];
- // Край на декларирането
- do {
- system("cls");
- cout << endl << endl;
- cout << "\t******************** Главно меню *********************" << endl; // Извеждане информация на екрана
- cout << "\t--------------------------------------------------------" << endl; // Извеждане информация на екрана
- cout << "\t|| 1.Въведи оценки ||" << endl; // Извеждане информация на екрана
- cout << "\t|| 2.Изведи данни за студентите с повече от 2 двойки ||" << endl; // Извеждане информация на екрана
- cout << "\t|| 3.Поправка на оценки ||" << endl; // Извеждане информация на екрана
- cout << "\t|| 4.Сортиране по среден успех ||" << endl; // Извеждане информация на екрана
- cout << "\t|| 5.Данни за студентите ||" << endl; // Извеждане информация на екрана
- cout << "\t|| 6.За автора ||" << endl; // Извеждане информация на екрана
- cout << "\t|| 0.Изход ||" << endl; // Извеждане информация на екрана
- cout << "\t========================================================" << endl; // Извеждане информация на екрана
- cout << "\t\tТвоя избор е:";
- cin >> choice; // Въвеждане на променлива
- switch (choice) { // Оператор
- case 1:
- system("cls");
- input_students(students, students_number);
- Sleep(3000);
- break;
- case 2:
- system("cls");
- weak_students(students, students_number);
- _getch();
- break;
- case 3:
- system("cls");
- get_amendment_students(students, students_number);
- _getch();
- break;
- case 4:
- sort_students(students, students_number);
- cout << "Students sorted!";
- break;
- case 5:
- output_students(students, students_number);
- _getch();
- break;
- case 6:
- about_author();
- _getch();
- break;
- }
- } while (choice != 0);
- delete[] students;
- return 0;
- }
- void slowmotioon(string text) //ф-я за изписване бавно анимиран текст в/у екрана
- {
- int p = 0;
- p = text.length();
- for (int i = 0; i<p; i++)
- {
- cout << text[i];
- Sleep(38);
- }
- }
- void about_author() {
- cout << "\n\n\n\t***********************************************************" << endl;
- cout << "\t* *" << endl;
- cout << "\t* Автор: Илиян Стоянов, СИТ, 6а група , ф.номер: 17621763 *" << endl;
- cout << "\t* *" << endl;
- cout << "\t***********************************************************" << endl;
- cout << "\t* *" << endl;
- cout << "\t* Благодаря за Вниманието !!! *" << endl;
- cout << "\t* *" << endl;
- cout << "\t***********************************************************" << endl;
- }
- void input_students(int **students, size_t students_number) {
- for (size_t i = 0; i < students_number; i++) {
- for (size_t j = 0; j < 9; j++) {
- switch (j) {
- case 0:
- cout << "Факултетен номер: ";
- cin >> students[i][j];
- if (!cin)
- break;
- break;
- case 1:
- students[i][j] = 0; // Среден Успех
- break;
- case 2:
- students[i][j] = 0; // Стипендии
- break;
- case 3:
- cout << "Оценка по Базово Програмиране: ";
- cin >> students[i][j];
- if (!cin || students[i][j] < 2 || students[i][j] > 6) {
- cout << "Error: Program will exit in 3 seconds!";
- Sleep(3000);
- exit(EXIT_FAILURE);
- }
- break;
- case 4:
- cout << "Оценка по Web Дизан: ";
- cin >> students[i][j];
- if (!cin || students[i][j] < 2 || students[i][j] > 6) {
- cout << "Error: Program will exit in 3 seconds!";
- Sleep(3000);
- exit(EXIT_FAILURE);
- }
- break;
- case 5:
- cout << "Оценка по Базова Математика: ";
- cin >> students[i][j];
- if (!cin || students[i][j] < 2 || students[i][j] > 6) {
- cout << "Error: Program will exit in 3 seconds!";
- Sleep(3000);
- exit(EXIT_FAILURE);
- }
- break;
- case 6:
- cout << "Оценка по Електроника: ";
- cin >> students[i][j];
- if (!cin || students[i][j] < 2 || students[i][j] > 6) {
- cout << "Error: Program will exit in 3 seconds!";
- Sleep(3000);
- exit(EXIT_FAILURE);
- }
- break;
- case 7:
- cout << "Оценка по Английски Език: ";
- cin >> students[i][j];
- if (!cin || students[i][j] < 2 || students[i][j] > 6) {
- cout << "Error: Program will exit in 3 seconds!";
- Sleep(3000);
- exit(EXIT_FAILURE);
- }
- break;
- case 8:
- cout << "Оценка по Спорт: ";
- cin >> students[i][j];
- if (!cin || students[i][j] < 2 || students[i][j] > 6) {
- cout << "Error: Program will exit in 3 seconds!";
- Sleep(3000);
- exit(EXIT_FAILURE);
- }
- break;
- default:
- cout << "Грешка";
- break;
- }
- }
- }
- }
- void output_students(int **students, size_t students_number) {
- for (size_t i = 0; i < students_number; i++) {
- cout << "\n============================\n";
- cout << "Факултетен номер: " << students[i][0] << endl;
- cout << "\n============================\n";
- // Намиране на средният успех
- students[i][1] = ((students[i][3] + students[i][4] + students[i][5] + students[i][6] + students[i][7] + students[i][8]) / 6);
- cout << "Среден успех: " << students[i][1] << endl;
- // Намиране на стипендията
- students[i][2] = (students[i][1] < 4 ? students[i][2] = 0.0 : students[i][1] >= 4 || students[i][1] < 5 ? students[i][2] = 50 : students[i][1] >= 5 || students[i][1] < 5.5 ? students[i][2] = 70 : students[i][1] >= 5.5 || students[i][1] <= 6 ? students[i][2] = 100 : 0);
- cout << "Стипендии: " << students[i][2] << " лева" << endl;
- cout << "--------------------Оценки------------------------\n";
- cout << "Базово Програмиране: " << students[i][3] << endl;
- cout << "Web Дизайн: " << students[i][4] << endl;
- cout << "Базова Математика: " << students[i][5] << endl;
- cout << "Електроника: " << students[i][6] << endl;
- cout << "Английски Език: " << students[i][7] << endl;
- cout << "Спорт: " << students[i][8] << endl;
- }
- }
- void weak_students(int **students, size_t students_number) {
- for (size_t i = 0; i < students_number; i++) {
- size_t counter = 0;
- for (size_t j = 3; j < 9; j++) {
- if (students[i][j] == 2) {
- counter++;
- }
- // Debug
- // cout << "Counter: " << counter << " | Students[i][j]: " << students[i][j];
- }
- if (counter > 2) {
- cout << "\n============================\n";
- cout << "Факултетен номер: " << students[i][0] << endl;
- cout << "\n============================\n";
- students[i][1] = ((students[i][3] + students[i][4] + students[i][5] + students[i][6] + students[i][7] + students[i][8]) / 6);
- cout << "Среден успех: " << students[i][1] << endl;
- cout << "Стипендии: " << students[i][2] << " лева" << endl;
- cout << "--------------------Оценки------------------------\n";
- cout << "Базово Програмиране: " << students[i][3] << endl;
- cout << "Web Дизайн: " << students[i][4] << endl;
- cout << "Базова Математика: " << students[i][5] << endl;
- cout << "Електроника: " << students[i][6] << endl;
- cout << "Английски Език: " << students[i][7] << endl;
- cout << "Спорт: " << students[i][8] << endl;
- }
- }
- }
- void get_amendment_students(int ** students, size_t students_number) {
- for (size_t i = 0; i < students_number; i++) {
- if (students[i][1] < 3) {
- cout << "\n============================\n";
- cout << "Факултетен номер: " << students[i][0] << endl;
- cout << "\n============================\n";
- cout << "Среден успех: " << students[i][1] << endl;
- cout << "Стипендии: " << students[i][2] << " лева" << endl;
- cout << "--------------------Оценки------------------------\n";
- cout << "Базово Програмиране: " << students[i][3] << endl;
- cout << "Web Дизайн: " << students[i][4] << endl;
- cout << "Базова Математика: " << students[i][5] << endl;
- cout << "Електроника: " << students[i][6] << endl;
- cout << "Английски Език: " << students[i][7] << endl;
- cout << "Спорт: " << students[i][8] << endl;
- }
- }
- }
- void sort_students(int **students, size_t students_number) {
- for (size_t i = 0; i < students_number - 1; i++) {
- for (size_t j = i + 1; j < students_number; j++) {
- if (students[i][1] > students[j][1]) {
- for (size_t k = 0; k < 9; j++) {
- int *temp = new int;
- *temp = students[i][k];
- students[i][k] = students[j][k];
- students[j][k] = *temp;
- delete temp;
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement