Cześć,
Dostaje WA tym kodem:
#include <iostream>
#include <ctype.h>
using namespace std;
void n()
{
cout<<"Nie"<<endl;
}
int main()
{
int t;
cin>>t;
string trash;
getline(cin,trash);
while(t--)
{
string m;
getline(cin,m);
int len=m.length();
bool at=0,dot_3=0; //at: flaga na koncowy cout oraz liczba znkow @ gdy tylko jedna @ at=1 else at=0, dot_3 = 1 gdy na koncu po kropce sa 3 litery
if (len<6||len>45)
{
n();
continue;
}
if (!(isalpha(m[len-2]))||!(isalpha(m[len-1]))) //czy dwa osatnie znaki to litery
{
n();
continue;
}
if (m[len-3]!='.'&&m[len-4]!='.') //czy 3 albo 4 znak od koncata to kropka
{
n();
continue;
}
if (m[len-4]=='.') // na ktorym miejscu od konca jest kropka
{
dot_3=1;
if (!(isalpha(m[len-3])))
{
n();
continue;
}
}
if (!(isalnum(m[0]))) // czy pierwszy znak to litera cyfra albo _
{
if (m[0]!='_')
{
n();
continue;
}
}
for(int i=1; i<len-3; i++) //petla po stringu od 2 znaku do ostatniej kropki
{
if(isalnum(m[i])) //gdy literka/cyfra to kolejny znak
continue;
else if (m[i]=='_') // _ tez jest okej
continue;
else if(m[i]=='.') // gdy . to spr czy kolejny znak to @ albo .
{
if(m[i+1]=='.'||m[i+1]=='@')
{
at=0;
break;
}
else
continue;
}
else if(m[i]=='@')
{
if (at==0) // czy wczesniej nie pojawila sie juz @
{
at++;
if (i<21) // czy przed @ jest nie wiecej niz 20 znakow
{
if (dot_3==1) // czy po @ nie ma wiecej niz 20 znakow do ostatniej kropki
{
if(len-5-i<21)
continue;
else
{
at=0;
break;
}
}
else
{
if(len-4-i<21)
continue;
else
{
at=0;
break;
}
}
}
else //za długi pierwszy ciag
{
at=0;
break;
}
}
else //kolejny znak @
{
at=0;
break;
}
}
else //niedozwolone znaki
{
at=0;
break;
}
}
if (at==0) //koncowy cout
n();
else
cout<<"Tak"<<endl;
}
return 0;
}
dla przykładowych testów: enter link description here mam takie same odpowiedzi, dla różnych innych przeze mnie wymyślonych testów również zwraca wg mnie poprawne odpowiedzi...
nie mam już pomysłu na test dla którego programik może zwrócić błędną odpowiedź. Może wczytywanie danych nawala, ale w to wątpię.
Proszę o pomoc, jakąś wskazówkę na co zwrócić uwagę żeby program przeszedł.
Pozdrawiam 