如何为所有结构成员赋值

时间:2013-10-09 14:53:23

标签: c++ arrays structure global

我有一个c ++任务。这是:

编写C ++程序以实现以下描述:

  1. 定义全局结构并使用以下成员将其命名为GStruct: 一个。 X为整数 湾Y为整数。
  2. 在main中定义一个本地结构,并使用以下成员将其命名为LStruct: 一个。 X为整数 湾Y [3]为GStruct
  3. 在main中声明了LStruct类型的两个变量V1和V2。
  4. 使用输入语句(cin)为其所有成员赋值。
  5. 如果V1等于V2打印"它们相等"否则打印"不等于"。
  6. 我做了我向我询问的所有事情,但我没有犯错误。但它没有按照我的要求工作。一直在处理这个问题超过5个小时。它让我发疯了。我过了100次就没用了。请帮忙.... 这就是我想出来的,我相信它没事,但是有些东西不见了,但我不知道它是什么。

    #include <iostream>
    using namespace std;
    
    struct GStruct
    {
        int x;
        int y;
    };
    
    int main()
    {
        struct LStruct
        {
            int x;
            GStruct y[3];
        };
        LStruct V1;
        LStruct V2;
    
        cin>>V1.x;
        cout<<V1.x<<endl;
        for (int i=0; i<3;i++)
        {
            cin>>V1.y[i].x;
        }
        for (int i=0; i<3;i++)
        {
            cin>>V1.y[i].y;
        }
    
    
        cin>>V2.x;
        cout<<V2.x<<endl;
        for (int i=0; i<3;i++)
        {
            cin>>V2.y[i].x;
        }
        for (int i=0; i<3;i++)
        {
            cin>>V2.y[i].y;
        }
    
    
        for (int i=0; i<3; i++)
        {
            if (V1.y[i].x == V2.y[i].x && V1.y[i].y == V2.y[i].y && V1.x == V2.y)
                continue;
            else
                cout<<"Not equal"<<endl;
        }
        return 0;
    }
    

1 个答案:

答案 0 :(得分:1)

首先按照我之前的建议将V1.x == V2.y更改为V1.x == V2.x。 然后将相等性检查更改为此,因为如果所有成员都相等,则只希望两个对象相等。

bool equal = true;
for (int i=0; i<3; i++)
{
    if (V1.y[i].x == V2.y[i].x && V1.y[i].y == V2.y[i].y && V1.x == V2.x)
        continue;
    else
    {
        equal = false;
        break;
    }
}
if ( equal ) 
   cout<<"Equal"<<endl;
else 
   cout<<"Not equal"<<endl;