Advertisement
Garey

fixed_v2

Nov 29th, 2017
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 13.34 KB | None | 0 0
  1. // Вариант на С++ програма за моделиране на оценки на студенти.
  2.  
  3. // Автор: Илиян Стоянов, СИТ, 6а група , ф.номер: 17621763
  4.  
  5. /*В програмата са използвани два двумерни масива с данни за студенти :фак. номер и 6 оценки (от 2 до 6) по дисциплини и среден успех и стипендия.
  6. Дефинира се функция за въвеждане на брой студенти (с валидация) и съхраняване на данните за всеки (ф. номер и 6 оценки).
  7. Оценките за всяка учебна дисциплина се генерират програмно.
  8. Средния успех се изчислява от шестте оценки.
  9. Стипендията се определя от средния успех
  10. На екрана се извеждат таблично данните за всеки студент от подгрупата.
  11. Функцията се извиква чрез избор от меню
  12. */
  13.  
  14. #include <iostream>
  15. #include <Windows.h>
  16. #include <string>
  17. #include <iomanip>
  18. #include <conio.h>
  19.  
  20. using namespace std;
  21.  
  22. void slowmotioon(string);
  23. void about_author();
  24. void input_students(int **, size_t);
  25. void output_students(int **, size_t);
  26. void weak_students(int **, size_t);
  27. void get_amendment_students(int **, size_t);
  28. void sort_students(int **, size_t);
  29. void fix_students_grades(int **, size_t);
  30.  
  31. int main() {
  32.  
  33. //  setlocale(LC_ALL, "Bulgarian");   // Функция за текст на кирилица
  34.     SetConsoleOutputCP(1251);
  35.     system("mode 110,40");   // За размер на прозореца на екрана
  36.     system("color 34");  // Задаване на цвят на фона и текста
  37.  
  38.     setlocale(LC_ALL, "Bulgarian");   // Функция за текст на кирилица
  39.     system("mode 110,40");   // За размер на прозореца на екрана
  40.     system("color 34");  // Задаване на цвят на фона и текста
  41.  
  42.     cout << "\n\t\t *************************************************** ";
  43.     cout << "\n\t\t *                                                   * ";
  44.     slowmotioon("\n\t\t *    Програма за прогнозиране и актуализация на     * ");
  45.     slowmotioon("\n\t\t *    оценки от сесия на студенти от виртуална       * ");
  46.     slowmotioon("\n\t\t *                 подгрупа.                         * ");
  47.     cout << "\n\t\t *                                                   * ";
  48.     cout << "\n\t\t *************************************************** ";
  49.  
  50.     Sleep(3000);   // Закъснение 3 секунди за прочитане на текста
  51.     system("cls");
  52.  
  53.     // Избор за менюто
  54.     int choice;
  55.  
  56.     // Брой на студенти
  57.     size_t students_number;
  58.  
  59.     cout << "Enter students number";
  60.     cin >> students_number;
  61.  
  62.     // Деклариране на масив
  63.     int **students = new int*[students_number];
  64.  
  65.     for (size_t i = 0; i < students_number; i++)
  66.         students[i] = new int[9];
  67.     // Край на декларирането
  68.  
  69.     do {
  70.         system("cls");
  71.  
  72.         cout << endl << endl;
  73.         cout << "\t******************** Главно меню *********************" << endl; // Извеждане информация на екрана
  74.         cout << "\t--------------------------------------------------------" << endl; // Извеждане информация на екрана
  75.         cout << "\t||  1.Въведи оценки                                   ||" << endl; // Извеждане информация на екрана
  76.         cout << "\t||  2.Изведи данни за студентите с повече от 2 двойки ||" << endl; // Извеждане информация на екрана
  77.         cout << "\t||  3.Поправка на оценки                              ||" << endl; // Извеждане информация на екрана
  78.         cout << "\t||  4.Сортиране по среден успех                       ||" << endl; // Извеждане информация на екрана
  79.         cout << "\t||  5.Данни за студентите                             ||" << endl; // Извеждане информация на екрана
  80.         cout << "\t||  6.За автора                                       ||" << endl; // Извеждане информация на екрана
  81.         cout << "\t||  0.Изход                                          ||" << endl; // Извеждане информация на екрана
  82.         cout << "\t========================================================" << endl; // Извеждане информация на екрана
  83.  
  84.         cout << "\t\tТвоя избор е:";
  85.         cin >> choice; // Въвеждане на променлива
  86.  
  87.         switch (choice) { // Оператор
  88.  
  89.         case 1:
  90.             system("cls");
  91.             input_students(students, students_number);
  92.             Sleep(3000);
  93.             break;
  94.         case 2:
  95.             system("cls");
  96.             weak_students(students, students_number);
  97.             cout << "\n\nFixing students...\n\n";
  98.             fix_students_grades(students, students_number);
  99.             cout << "\n\Press a key to continue...\n\n";
  100.             _getch();
  101.             cout << "Outputting students...\n\n";
  102.             output_students(students, students_number);
  103.             cout << "\n\Press a key to continue...\n\n";
  104.             _getch();
  105.             break;
  106.         case 3:
  107.             system("cls");
  108.             get_amendment_students(students, students_number);
  109.             _getch();
  110.             break;
  111.         case 4:
  112.             sort_students(students, students_number);
  113.             cout << "Students sorted!";
  114.             break;
  115.         case 5:
  116.             output_students(students, students_number);
  117.             _getch();
  118.             break;
  119.         case 6:
  120.             about_author();
  121.             _getch();
  122.             break;
  123.         }
  124.  
  125.  
  126.     } while (choice != 0);
  127.  
  128.     delete[] students;
  129.    
  130.     return 0;
  131. }
  132.  
  133. void slowmotioon(string text)   //ф-я за изписване бавно анимиран текст в/у екрана
  134. {
  135.  
  136.     int p = 0;
  137.  
  138.     p = text.length();
  139.     for (int i = 0; i<p; i++)
  140.     {
  141.         cout << text[i];
  142.         Sleep(38);
  143.     }
  144. }
  145.  
  146. void about_author() {
  147.     cout << "\n\n\n\t***********************************************************" << endl;
  148.     cout << "\t*                                                         *" << endl;
  149.     cout << "\t* Автор: Илиян Стоянов, СИТ, 6а група , ф.номер: 17621763 *" << endl;
  150.     cout << "\t*                                                         *" << endl;
  151.     cout << "\t***********************************************************" << endl;
  152.     cout << "\t*                                                         *" << endl;
  153.     cout << "\t*              Благодаря за Вниманието !!!                *" << endl;
  154.     cout << "\t*                                                         *" << endl;
  155.     cout << "\t***********************************************************" << endl;
  156. }
  157.  
  158. void input_students(int **students, size_t students_number) {
  159.     for (size_t i = 0; i < students_number; i++) {
  160.         for (size_t j = 0; j < 9; j++) {
  161.             switch (j) {
  162.                 case 0:
  163.                     cout << "Факултетен номер: ";
  164.                     cin >> students[i][j];
  165.  
  166.                     if (!cin)
  167.                         break;
  168.  
  169.                     break;
  170.                 case 1:
  171.                     students[i][j] = 0; // Среден Успех
  172.                     break;
  173.                 case 2:
  174.                     students[i][j] = 0; // Стипендии
  175.                     break;
  176.                 case 3:
  177.                     cout << "Оценка по Базово Програмиране: ";
  178.                     cin >> students[i][j];
  179.  
  180.                     if (!cin || students[i][j] < 2 || students[i][j] > 6) {
  181.                         cout << "Error: Program will exit in 3 seconds!";
  182.                         Sleep(3000);
  183.                         exit(EXIT_FAILURE);
  184.                     }
  185.                     break;
  186.                 case 4:
  187.                     cout << "Оценка по Web Дизан: ";
  188.                     cin >> students[i][j];
  189.  
  190.                     if (!cin || students[i][j] < 2 || students[i][j] > 6) {
  191.                         cout << "Error: Program will exit in 3 seconds!";
  192.                         Sleep(3000);
  193.                         exit(EXIT_FAILURE);
  194.                     }
  195.  
  196.                     break;
  197.                 case 5:
  198.                     cout << "Оценка по Базова Математика: ";
  199.                     cin >> students[i][j];
  200.  
  201.                     if (!cin || students[i][j] < 2 || students[i][j] > 6) {
  202.                         cout << "Error: Program will exit in 3 seconds!";
  203.                         Sleep(3000);
  204.                         exit(EXIT_FAILURE);
  205.                     }
  206.  
  207.                     break;
  208.                 case 6:
  209.                     cout << "Оценка по Електроника: ";
  210.                     cin >> students[i][j];
  211.  
  212.                     if (!cin || students[i][j] < 2 || students[i][j] > 6) {
  213.                         cout << "Error: Program will exit in 3 seconds!";
  214.                         Sleep(3000);
  215.                         exit(EXIT_FAILURE);
  216.                     }
  217.  
  218.                     break;
  219.                 case 7:
  220.                     cout << "Оценка по Английски Език: ";
  221.                     cin >> students[i][j];
  222.  
  223.                     if (!cin || students[i][j] < 2 || students[i][j] > 6) {
  224.                         cout << "Error: Program will exit in 3 seconds!";
  225.                         Sleep(3000);
  226.                         exit(EXIT_FAILURE);
  227.                     }
  228.  
  229.                     break;
  230.                 case 8:
  231.                     cout << "Оценка по Спорт: ";
  232.                     cin >> students[i][j];
  233.  
  234.                     if (!cin || students[i][j] < 2 || students[i][j] > 6) {
  235.                         cout << "Error: Program will exit in 3 seconds!";
  236.                         Sleep(3000);
  237.                         exit(EXIT_FAILURE);
  238.                     }
  239.  
  240.                     break;
  241.                 default:
  242.                     cout << "Грешка";
  243.                     break;
  244.             }
  245.         }
  246.     }
  247. }
  248.  
  249. void output_students(int **students, size_t students_number) {
  250.     for (size_t i = 0; i < students_number; i++) {
  251.  
  252.         cout << "\n============================\n";
  253.         cout << "Факултетен номер: " << students[i][0] << endl;
  254.         cout << "\n============================\n";
  255.  
  256.         // Намиране на средният успех
  257.         students[i][1] = ((students[i][3] + students[i][4] + students[i][5] + students[i][6] + students[i][7] + students[i][8]) / 6);
  258.        
  259.         cout << "Среден успех: " << students[i][1] << endl;
  260.  
  261.         // Намиране на стипендията
  262.         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);
  263.        
  264.         cout << "Стипендии: " << students[i][2] << " лева" << endl;
  265.         cout << "--------------------Оценки------------------------\n";
  266.         cout << "Базово Програмиране: " << students[i][3] << endl;
  267.         cout << "Web Дизайн: " << students[i][4] << endl;
  268.         cout << "Базова Математика: " << students[i][5] << endl;
  269.         cout << "Електроника: " << students[i][6] << endl;
  270.         cout << "Английски Език: " << students[i][7] << endl;
  271.         cout << "Спорт: " << students[i][8] << endl;
  272.     }
  273. }
  274.  
  275. void weak_students(int **students, size_t students_number) {
  276.  
  277.     for (size_t i = 0; i < students_number; i++) {
  278.         size_t counter = 0;
  279.  
  280.         for (size_t j = 3; j < 9; j++) {
  281.             if (students[i][j] == 2) {
  282.                 counter++;
  283.             }
  284.             // Debug
  285.             // cout << "Counter: " << counter << " | Students[i][j]: " << students[i][j];
  286.         }
  287.        
  288.         if (counter > 2) {
  289.             cout << "\n============================\n";
  290.             cout << "Факултетен номер: " << students[i][0] << endl;
  291.             cout << "\n============================\n";
  292.  
  293.             students[i][1] = ((students[i][3] + students[i][4] + students[i][5] + students[i][6] + students[i][7] + students[i][8]) / 6);
  294.            
  295.             cout << "Среден успех: " << students[i][1] << endl;
  296.             cout << "Стипендии: " << students[i][2] << " лева" << endl;
  297.  
  298.             cout << "--------------------Оценки------------------------\n";
  299.             cout << "Базово Програмиране: " << students[i][3] << endl;
  300.             cout << "Web Дизайн: " << students[i][4] << endl;
  301.             cout << "Базова Математика: " << students[i][5] << endl;
  302.             cout << "Електроника: " << students[i][6] << endl;
  303.             cout << "Английски Език: " << students[i][7] << endl;
  304.             cout << "Спорт: " << students[i][8] << endl;
  305.            
  306.         }
  307.     }
  308. }
  309.  
  310. void get_amendment_students(int ** students, size_t students_number) {
  311.     for (size_t i = 0; i < students_number; i++) {
  312.         if (students[i][1] < 3) {
  313.             cout << "\n============================\n";
  314.             cout << "Факултетен номер: " << students[i][0] << endl;
  315.             cout << "\n============================\n";
  316.  
  317.             cout << "Среден успех: " << students[i][1] << endl;
  318.             cout << "Стипендии: " << students[i][2] << " лева" << endl;
  319.  
  320.             cout << "--------------------Оценки------------------------\n";
  321.             cout << "Базово Програмиране: " << students[i][3] << endl;
  322.             cout << "Web Дизайн: " << students[i][4] << endl;
  323.             cout << "Базова Математика: " << students[i][5] << endl;
  324.             cout << "Електроника: " << students[i][6] << endl;
  325.             cout << "Английски Език: " << students[i][7] << endl;
  326.             cout << "Спорт: " << students[i][8] << endl;
  327.         }
  328.     }
  329. }
  330.  
  331. void fix_students_grades(int **students, size_t students_number) {
  332.     for (size_t i = 0; i < students_number; i++) {
  333.         for (size_t j = 3; j < 9; j++) {
  334.             if (students[i][j] == 2)
  335.                 students[i][j] = 3;
  336.         }
  337.     }
  338. }
  339.  
  340. void sort_students(int **students, size_t students_number) {
  341.     for (size_t i = 0; i < students_number - 1; i++) {
  342.         for (size_t j = 0; j < students_number - i - 1; j++) {
  343.             if (students[j][1] > students[j + 1][1]) {
  344.                 for (size_t k = 0; k < 9; k++) {
  345.                     int temp;
  346.  
  347.                     temp = students[j][k];
  348.                     students[j][k] = students[j + 1][k];
  349.                     students[j + 1][k] = temp;
  350.                 }
  351.             }
  352.         }
  353.     }
  354. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement