c++ - 带数组的字符串

标签 c++ arrays string char

你好,我有一个这样的结构:

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'|

        }
    }

}

我想告诉你的是我的问题是指针。我不知道如何为考试成绩分配足够的内存空间?

最佳答案

在您的代码中,k 是一个Student 数组,而不是一个Student* 数组。所以你需要使用.而不是->。这就是你得到那个错误的原因。该代码的另一个问题是您对数组大小使用了非常量值,这在 C++ 中是不允许的。

对于动态分配,最简单的解决方案是使用 std::vector。这会同时处理分配和解除分配,无需额外处理。

鉴于这是家庭作业,如果由于某种原因不允许您使用 std::vector,您将需要使用 new[]delete [].

如果由于某些非常愚蠢的原因你不能使用 new[]delete[] 你将需要使用 malloc免费

关于c++ - 带数组的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7739310/

相关文章:

没有编码的python 3字符串参数

javascript - 使用react.js无法正确显示传单弹出字符串html

c++ - 在 for 循环中创建的对象具有相同的地址

c++ - 如何实现纯虚函数

c++ - 将 stdout、stderr、cout、cerr 重定向到文件和屏幕

java - 如何将 Html 行放在矩阵 2d java 上

java - 循环访问对象数组并访问特定的键/值字段

java - 文件保存 500 个从 0 到 1000 的随机数。将这些数字写入文件,然后打开文件并一一读取数字

sql - 如果 T-SQL 中记录为 NULL,如何替换字符串

c++ - 具有较少关键点的单应矩阵和图像变换