как написать класс с элементами данных и функцией-членом c

#visual-c

#visual-c

Вопрос:

привет, ребята, я хотел бы, чтобы вы помогли мне в моем задании, я пытался его решить, но есть некоторые вещи, которые заставляют меня: я знаю, как создать имя и идентификатор

имя строки; идентификатор int;

bt wt означает ли это указатель на динамически распределяемый массив оценок: s: s:S? я jst знаю, как объявить указатель типа: double* Grades;

вот назначение……

Создайте класс StudentGrades со следующими элементами данных:

  • Имя : тип String
  • Идентификатор: введите целое число
  • Оценки: указатель на динамически распределяемый массив оценок. Тип: указатель на double (* double)

Он включает в себя следующие функции-члены:

  • Конструктор без аргументов
  • Конструктор, который принимает два аргумента: строку и целое число и инициализирует имя строкой, а ИДЕНТИФИКАТОР целым числом.
  • Задайте и получите функции для имени, идентификатора
  • Функция печати для информации об учащемся. Он печатает имя, идентификатор и оценки.
  • Перегруженный оператор присваивания объектов класса
  • Конструктор копирования объектов класса
  • Используйте синтаксис конструктора копирования и перегруженного оператора присваивания.

В другом файле создайте программу на C , которая запрашивает у пользователя данные для создания четырех объектов класса StudentGrades. Первый объект (std1) имеет 5 оценок, а второй (std2) имеет 6 оценок, а третий (std3) имеет 4 оценки, а четвертый (std4) не имеет оценок и данных. Затем скопируйте std2 в std4 и назначьте std1 std3. Затем выведите сведения о четырех объектах

привет, я решил свое задание, я пытаюсь запустить его, но оно не работает, может ли кто-нибудь, пожалуйста, сказать мне, в чем проблема в программе

 #include <iostream>

using namespace std;

class student_grades{
private:
    string name,n;
    int Id,i;
    double* grades[];

public:
    student_grades();

    student_grades(sting, int);

    student_grades(const student_gradesamp;);

    void set(string name,int Id){
        cout << "enter the name and the ID";
        cin >> n >> i;
        n = name;
        i = Id;
    }

    void get(){
        return i;
        return n;
    }

    void student_grades (student_gradesamp;opr){
        name = name.opr;
        Id = Id.opr;
        grades[] = grades[].opr;
    }

    void student_info(){
        cout << "the name of the student is:" << name;
        cout << "the id for the srudent is:" << Id;
        grades = new double[];
        cout << "the grades of the student is:" << grades[] << endl;
        delete []grades;
    }

};

student_grades::student_grades() {}

student_grades::student_grades(string name, int Id) {
    name=" ";
    Id=0;
}

student_grades::student_grades(const student_gradesamp; copy) {
    name=copy.name;
    Id=copy.Id;
}

int main() {

    student_grades std1;
    std1.set();
    cin >> std1.grades[5];
    std1.get();

    student_grades std2;
    std2.set();
    cin >> std2.grades[6];
    std2.get();

    student_grades std3;
    std3.set();
    cin >> std3.grades[4];
    std3.get();

    student_grades std4;
    std4.set();
    cin >> std4.grades[];
    std4.get();

    std1 = std3;
    std2 = std4;

    cout << std1 << std2 << std3 << std4;

    return 0;
}
  

Ответ №1:

Динамически распределяемый массив — это массив, которому не присваивается определенный размер до времени выполнения, в отличие от объявления фиксированного массива во время компиляции. Объявление фиксированного массива выглядит следующим образом:

 int grades[500];
  

Этот массив выделит память для 500 целых чисел и останется таким, если вы не уничтожите его или не измените его размер.

Создание динамически распределяемого массива будет выглядеть примерно так:

 int* grades = NULL; // A declaration in your StudentGrades class
int n = <get size from somewhere>; // Makes the size "dynamic"
grades = new int[n]; // This definition could be in your StudentGrades ctor,
                     // with n being a parameter.
  

Затем вы можете продолжить, инициализировав все элементы массива равными 0 или заполнив свой массив другими значениями по мере необходимости. Когда вы закончите с массивом, очистите его. Это может быть в вашем деструкторе:

 delete [] grades;
grades = NULL;
  

Комментарии:

1. большое вам спасибо, это было действительно полезно, но могу ли я задать дополнительные вопросы??

2. Да, вы можете задавать больше вопросов, но я не буду делать за вас домашнее задание.

3. LOL нет, вы не будете этого делать, я просто запутываю вещи, не волнуйтесь, как мы можем напечатать функцию, которую мы не принимали от пользователя для нее?

4. Хорошо … чтобы задать дополнительные вопросы, не публикуйте новые, просто отредактируйте свой исходный пост.