【发布时间】:2011-10-12 11:25:40
【问题描述】:
你好,我有一个这样的结构:
struct Student
{
string name,lettergrade;
int stdnumber,*examgrades;
double avarege;
};
我必须编写一个程序来计算学生的平均成绩和字母成绩。
我必须使用这个功能:
void getdata();
double calcgrades();
void show();
void erase();
我必须向用户询问学生总数和考试总数。然后我必须分配必要的内存空间。 (动态分配)
输出画面一定是这样的:
Enter the number of students: 2
Enter the number of exams: 2
1. student's name: michael
1. student's school number: 5000
1. student's 1. exam grade: 50
1. student's 2. exam grade: 40
The avarege of this student is: 45 Letter grade: F
2. student's name: [b]mary[/b]
2. student's school number: 6000
2. student's 1. exam grade: 70
2. student's 2. exam grade: 80
The avarege of this student is: 75 Letter grade: B
我的问题是,我不能将它分配给字符串变量,比如学生姓名和字母等级...(在 getdata 函数中)
字母等级为 A:85-100,B:75-84,C:65-74,D:50-64,F:0-49 超过 100 分。
谁能知道这个问题?
编辑:
void getdata()
{
int i,j;
i=0;j=0;
int stdnumber;
int examnumber;
cout<<"How many students..."<<endl;
cin>>stdnumber;
Student k[stdnumber];
cout<<"How many exams...."<<endl;
cin>>examnumber;
for (i=0;i<stdnumber;i++)
{
cout<<i+1<<". student's name: "<<endl;
cin>>k[i].name;
cout<<i+1<<". student's school number: "<<endl;
cin>>k[i].stdnumber;
for (j=0;j<examnumber;j++)
{
cout<<i+1<<". student's "<<j+1<<". exam grade: "<<endl;
cin>>k[i]->examgrades; //The error is here: base operand of '->' has non-pointer type 'Student'|
}
}
}
我想告诉你的是我的问题在于指针。不知道如何为考试成绩分配足够的内存空间?
【问题讨论】:
-
到目前为止你的代码是什么?您在哪里遇到问题?
-
“我必须做”这是作业吗?他们不是已经告诉过你一些可以选择的工具了吗?
-
当然让我们以不具建设性的方式结束它。 @WhoCares 你能用
std::vector吗? -
另外,
getdata应该如何返回数据? -
C++ 没有可变长度数组,因此
Student k[stdnumber];不是有效的 C++。这是新手常见的错误。