程序无法显示第二次迭代以后的输出

时间:2018-12-20 11:37:21

标签: c++

for(int i=0;i<T;i++)   // t test cases
{
    int flag=0;        //flag variable to check the output
    char A[3][3];

    for(int j=0;j<3;j++)        //Taking
        for(int k=0;k<3;k++)     //Input
           cin>>A[j][k];          //in a character Array

    //checking for letter 'l' in the character array and if other l's  also exist or not

    for(int j=0;j<2;j++)
      for(int k=0;k<2;k++)
    {
        if(A[j][k]=='l')
        {
            if(A[j+1][k]=='l' && A[j+1][k+1]=='l')
                flag++;
        }
    }

     if(flag>0)
            cout<<"yes"<<endl;
}

return 0;

}

这是我的代码,问题是检查是否在3 * 3字符数组中,是否有类似
的模式 l
ll

它可以正确地用于第一个迭代或第一个测试用例,但是从第二个以后都没有显示结果。

2 个答案:

答案 0 :(得分:0)

它正常工作,如您在此处看到的:onlinegdb.com/r1VCS-FxN。

失败时您看不到结果,因为您没有“否”提示。

链接中的代码,以防万一它停止工作:

#include <iostream>
using namespace std;

int main() {
    const int T = 3;
    cout << "T: " << T << endl;

    for(int i=0;i<T;i++)   // t test cases
    {
        int flag=0;        //flag variable to check the output
        char A[3][3];

        for(int j=0;j<3;j++)        //Taking
            for(int k=0;k<3;k++)     //Input
                cin>>A[j][k];          //in a character Array

        //checking for letter 'l' in the character array and if other l's  also exist or not

        for(int j=0;j<2;j++)
            for(int k=0;k<2;k++) {
                if(A[j][k]=='l') {
                    if(A[j+1][k]=='l' && A[j+1][k+1]=='l')
                        flag++;
                }
            }
        cout << "Flags: " << flag << endl;

        if(flag>0)
            cout<<"yes"<<endl;
        else
            cout << "nope" << endl;
    }
    return 0;
}

答案 1 :(得分:-1)

内部循环中的内部测试:

if(A[j+1][k]=='l' && A[j+1][k+1]=='l')
   flag++;

我认为应该是

if(A[j+1][k]=='l' || A[j+1][k+1]=='l')
    flag++;