Witam,mam problem z zadaniem ,wypisuje nieprawidlowy wynik
oto treść:
W pliku hasla.txt danych jest 200 haseł użytkowników pewnego systemu. Każdy użyt- kownik posiada jedno hasło (każde zapisane jest w osobnym wierszu), które zawiera od 1 do 20 znaków alfanumerycznych, tzn. cyfr od 0 do 9 lub liter alfabetu łacińskiego (małych lub dużych). Polityka bezpieczeństwa systemu wymaga, aby hasła były odpowiednio skompliko- wane i nie powtarzały się.
Poniżej podano pierwsze pięć haseł zapisanych w pliku hasla.txt:
ZXUhkPLcjKo ikfLDegQXj 8Y7JGYXXR5
603624722555 50q4252ax5
Napisz program, który da odpowiedzi do poniższych zadań. Odpowiedzi do poszczególnych zadań zapisz w pliku tekstowym wyniki_hasla.txt. Wyniki do każdego zadania po- przedź numerem oznaczającym to zadanie.
Podaj liczbę użytkowników posiadających hasła, w których występuje fragment złożony z czterech kolejnych znaków ASCII (w dowolnej kolejności).
Przykłady haseł zawierających taki fragment to:
A5mnpoR89cd A5876RRcg
As45FGHFEk90nba
#include <iostream>
#include <fstream>
using namespace std;
bool czy_C1(string s)
{
int ile1=0;
for(int i=0; i<s.size(); i++)
{
while(s[i]>='0' && s[i]<='9')
{
i++;
ile1++;
}
if(ile1==4)return true;
ile1=0;
}
return false;
}
bool czy_C2(string s)
{
int ile3=0;
for(int i=0; i<s.size(); i++)
{
while(s[i]>='A' && s[i]<='Z')
{
i++;
ile3++;
}
if(ile3==4)return true;
ile3=0;
}
return false;
}
bool czy_C3(string s)
{
int ile2=0;
for(int i=0; i<s.size(); i++)
{
while(s[i]>='a' && s[i]<='z')
{
i++;
ile2++;
}
if(ile2==4)return true;
ile2=0;
}
return false;
}
int main()
{
string s;
int ile=0;
ifstream we("hasla.txt");
for(int i=0; i<200; i++)
{
we>>s;
if(czy_C1(s) || czy_C2(s) || czy_C3(s))ile++;
}
cout<<ile<<endl;
return 0;
}
może ktoś widzi błąd ?>