0

实际上有一个百万富翁举办的派对,我试图使用 2 位客人的结构数组来存储他们的姓名和年龄,然后最后我试图显示客人的总数并将他们除以他们的年龄组。帮帮我!这是我第一次发帖!请原谅我的错误!谢谢!

#include "iostream"
#include "string"

using namespace std;
struct guests
{
    string name;
    int age;
};

int main()
{
    int i=0,j=0;
    guests guest[1];
    try
    {
        do{
            cout<<"enter your name"<<endl;
            getline(cin,guest[i].name).get();
            cout<<"enter your age"<<endl;
            cin>>guest[i].age;
            cin.get();
            i++;
        }
        while(i>0 && i<2);

        cout<<i<<"number of guests attended the party"<<endl;
        for(i=0;i<2;i++)
        {
            if((guest[i].age>19 && guest[i].age<31))
            {
                j++;
                cout<<j<<"number of guests of age group between 20 and 30 are her"<<endl;
            }
            else if((guest[i].age>29 && guest[i].age<41))
            {
                j=0;
                j++;
                cout<<j<<"number of guests of age group between 30 and 40 are here"<<endl;
            }
            else
                cout<<j<<"number of guests of agegroup between 40 and 50 are here"<<endl;
        }
    }
    catch (int e)
    {
        cout << "An exception occurred. Exception Nr. " << e << endl;
    }
    return 0;
    cin.get();
}
4

2 回答 2

3

看起来你的错误在这里:

客人客人[1];

您只为一位客人分配了足够的内存。当您尝试访问第二位来宾时,您将越界。

如果您想有两个客人,请将客人数组声明为:

客人客人[2];

于 2013-08-16T15:21:29.830 回答
0

你的错误是当你声明数组时:

guests guest[1];

您想要 2 位客人,但您要声明一个只有一个项目的数组。它不能工作......你有一个越界错误。

你这样声明你的数组:

guests guest[2];
//           ^ An array of 2 items

但不要忘记访问成员从索引开始0

guest[0];   // Access the first element of the array
guest[1];   // Access the second element
于 2013-08-16T15:27:40.193 回答