-2

我正在为数学课做这件事,只是无法让 if-else 语句起作用。有人可以告诉我应该为 else 语句做什么吗?我的想法是将向量传递给函数,每次函数看到“关闭”时,它都会将其更改为“打开”,反之亦然。编译器总是在 if 语句处停止,这在向量中的第一个元素被改变之后什么都没有:

string getValue(vector<string> &arr)
{

    for(int i=2; i <=50; i++)
    {
        if(arr[i]=="close")
        {
          return arr[i]="open";
        }
    }

    return "close";

}
4

2 回答 2

2

问题是return. 语句第一次if为真时,return语句执行,从当前函数返回。大概,你打算它只是array[i] = "open";

就目前else而言,根据您的描述,您需要以下内容:

else if (array[i] == "open")
    array[i] = "close";

就个人而言,我认为我会将其更改为使用数字,并单独存储关联的字符串:

enum { OPEN, CLOSE };
static const int names[] = {"open", "close"};

然后您可以转换OPENCLOSE,反之亦然,例如:

for (int &i : arr)
    i = 1 - i;
于 2013-09-08T04:46:37.880 回答
1

尝试:

void getValue(vector<string> &arr)
{
    for(int i=0; i <arr.size(); i++)
    {
        if(arr[i]=="close")
        {
          arr[i]="open";
        }
        else if(arr[i]=="open")
        {
          arr[i]="close";
        }
    }
}
于 2013-09-08T04:48:14.337 回答