#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. Хорошо … чтобы задать дополнительные вопросы, не публикуйте новые, просто отредактируйте свой исходный пост.