35657

Untitled

Jun 1st, 2024
484
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.45 KB | None | 0 0
  1. // Вычислить среднюю оценку студента
  2.  
  3. #include <iostream>
  4. #include <iomanip>
  5. #include <conio.h>
  6.  
  7. using namespace std;
  8.  
  9. class Student {
  10.  
  11. public:
  12.  
  13.    
  14.     // конструктор по умолчанию (без параметров)
  15.     Student() {
  16.         // присваивание имени
  17.         name = nullptr;
  18.         // присваивание списка оценок
  19.         marks = nullptr;
  20.         markCount = 0;
  21.     }
  22.  
  23.     // конструктор для двух параметров
  24.     Student(const char* studentName, const int studentMarkCount) {
  25.         // присваивание имени
  26.         createName(studentName);
  27.         // присваивание списка оценок
  28.         marks = new int[studentMarkCount];
  29.         for (int i = 0; i < studentMarkCount; i++) {
  30.             marks[i] = 0;
  31.         }
  32.         markCount = studentMarkCount;
  33.     }
  34.  
  35.     // конструктор для трех параметров
  36.     Student(const char* studentName, const int studentMarkCount, const int* studentMarks) {
  37.         // присваивание имени
  38.         createName(studentName);
  39.         // присваивание списка оценок
  40.         marks = new int[studentMarkCount];
  41.         for (int i = 0; i < studentMarkCount; i++) {
  42.             marks[i] = studentMarks[i];
  43.         }
  44.         markCount = studentMarkCount;
  45.     }
  46.  
  47.     // запись имени
  48.     void setName(const char* studentName) {
  49.         delete[] name;
  50.         createName(studentName);
  51.     }
  52.  
  53.     // запись элементов массива marks
  54.     void setMark(int mark, int index) {
  55.         // проверка индекса
  56.         if (index < 0 or index >= markCount) {
  57.             return;
  58.         }
  59.  
  60.         // присваивание с проверкой Marks
  61.         if (mark < 1 or mark > 12) {
  62.             mark = 0;
  63.         }
  64.         marks[index] = mark;
  65.     }
  66.  
  67.     // реализация метода вычисления среднего балла
  68.     double getAver() {
  69.         double sum = 0;
  70.         for (int i = 0; i < markCount; i++) {
  71.             sum += marks[i];
  72.         }
  73.         return sum / markCount;
  74.     }
  75.  
  76.  
  77.     const char* getName() {
  78.         return name;
  79.     }
  80.  
  81.     int getMark(int index) {
  82.         return marks[index];
  83.     }
  84.    
  85. ~Student() {
  86.         // освобождение памяти для имени
  87.         if (name != nullptr) {
  88.             delete[] name;
  89.         }
  90.         // освобождение памяти для списка оценок
  91.         if (marks != nullptr) {
  92.             delete[] marks;
  93.         }
  94.         cout << "Destructor Student" << endl;
  95.     }
  96.  
  97. private:
  98.     // ФИО
  99.     char* name;
  100.     // число оценок
  101.     int markCount;
  102.     // Marks
  103.     int* marks;
  104.  
  105.     void createName(const char* studentName) {
  106.         int nameLength = strlen(studentName) + 1;
  107.         name = new char[nameLength];
  108.         for (int i = 0; i < nameLength; i++) {
  109.             name[i] = studentName[i];
  110.         }
  111.     }
  112. };
  113.  
  114.  
  115.  
  116.  
  117. int main() {
  118.     cout << "Student grade:" << endl;
  119.  
  120.     // создание объекта с заданными значениями
  121.     Student student("Petrov A.O.", 3, new int[3] { 10, 10, 9 });
  122.  
  123.     // выполнение метода объекта
  124.     cout << "Average mark " << student.getName() << " : " << setprecision(3) << student.getAver() << endl;
  125. }
  126.  
  127.  
Advertisement
Add Comment
Please, Sign In to add comment