0分求助!!!

B3843 [GESP202306 三级] 密码合规

stepz00zy @ 2024-07-26 19:22:12

#include <bits/stdc++.h>
using namespace std;
string a,b[101],temp;
int num=1,v,t=1,rt[5],tp,sz,nt=1;
bool judge()
{
    for(int k=0;k<b[v].size();k++)
    {
        if(6<=b[v].size()<=12) sz=1;
        if(b[v][k]>='a'&&b[v][k]<='z') {rt[1]=1;continue;}
        if(b[v][k]>='A'&&b[v][k]<='Z') {rt[2]=1;continue;}
        if(b[v][k]>='0'&&b[v][k]<='9') {rt[3]=1;continue;}
        if(!(b[v][k]=='!'||b[v][k]=='@'||b[v][k]=='#'||b[v][k]=='$')) nt=0;
    }
    for(int j=1;j<=3;j++)
        {
            if(rt[j]==1)tp++;
        }
        if(tp>=2&&sz==1&&nt==1) return true;
}

int main()
{

    getline(cin,a);
    a+=",";
    for(int i=0;i<=(a.length()+1);i++)
    {
        if(a[i]!=44)temp+=a[i];
        else{b[num]=temp;temp="";num++;}
    }
    for(int i=1;i<=num;i++)
    {
        v=i;
        if(judge()) cout<<b[i]<<endl;
    }
    return 0;
}

求助大佬!!!0分


by meifan666 @ 2024-07-26 19:29:28

@stepz00zy 为什么有特殊字符时nt为0?


by meifan666 @ 2024-07-26 19:31:33

@stepz00zy

1.第一个循环中i<a.length()+1

2.最后的循环中i<num


by stepz00zy @ 2024-07-26 19:38:46

@meifan666 在更改循环后,devc++中测试没问题,但提交后仍是WA。。。


by meifan666 @ 2024-07-26 19:42:50

@stepz00zy 函数里为啥没判断一个rt就continue?


by stepz00zy @ 2024-07-26 20:13:19

@meifan666 思路是从上到下依次检测大写,小写和数字,如果是,则设置数组rt的值,并继续检测下一个字符。如果这三个都不是,则判断符号是否为那四个,不是就设置nt为0


by stepz00zy @ 2024-07-26 20:18:39

判断rt写在了judge函数下部分


by meifan666 @ 2024-07-26 22:09:46

@stepz00zy 你rt好像没有清零(每判断一个单词清零)


by stepz00zy @ 2024-07-29 17:06:20

@meifan666 已绿灯,感谢(忘回复了,补个回复)


|