Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Вычислить среднюю оценку студента
- #include <iostream>
- #include <iomanip>
- #include <conio.h>
- using namespace std;
- class Student {
- public:
- // конструктор по умолчанию (без параметров)
- Student() {
- // присваивание имени
- name = nullptr;
- // присваивание списка оценок
- marks = nullptr;
- markCount = 0;
- }
- // конструктор для двух параметров
- Student(const char* studentName, const int studentMarkCount) {
- // присваивание имени
- createName(studentName);
- // присваивание списка оценок
- marks = new int[studentMarkCount];
- for (int i = 0; i < studentMarkCount; i++) {
- marks[i] = 0;
- }
- markCount = studentMarkCount;
- }
- // конструктор для трех параметров
- Student(const char* studentName, const int studentMarkCount, const int* studentMarks) {
- // присваивание имени
- createName(studentName);
- // присваивание списка оценок
- marks = new int[studentMarkCount];
- for (int i = 0; i < studentMarkCount; i++) {
- marks[i] = studentMarks[i];
- }
- markCount = studentMarkCount;
- }
- // запись имени
- void setName(const char* studentName) {
- delete[] name;
- createName(studentName);
- }
- // запись элементов массива marks
- void setMark(int mark, int index) {
- // проверка индекса
- if (index < 0 or index >= markCount) {
- return;
- }
- // присваивание с проверкой Marks
- if (mark < 1 or mark > 12) {
- mark = 0;
- }
- marks[index] = mark;
- }
- // реализация метода вычисления среднего балла
- double getAver() {
- double sum = 0;
- for (int i = 0; i < markCount; i++) {
- sum += marks[i];
- }
- return sum / markCount;
- }
- const char* getName() {
- return name;
- }
- int getMark(int index) {
- return marks[index];
- }
- ~Student() {
- // освобождение памяти для имени
- if (name != nullptr) {
- delete[] name;
- }
- // освобождение памяти для списка оценок
- if (marks != nullptr) {
- delete[] marks;
- }
- cout << "Destructor Student" << endl;
- }
- private:
- // ФИО
- char* name;
- // число оценок
- int markCount;
- // Marks
- int* marks;
- void createName(const char* studentName) {
- int nameLength = strlen(studentName) + 1;
- name = new char[nameLength];
- for (int i = 0; i < nameLength; i++) {
- name[i] = studentName[i];
- }
- }
- };
- int main() {
- cout << "Student grade:" << endl;
- // создание объекта с заданными значениями
- Student student("Petrov A.O.", 3, new int[3] { 10, 10, 9 });
- // выполнение метода объекта
- cout << "Average mark " << student.getName() << " : " << setprecision(3) << student.getAver() << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment