1.
>> Natomiast z wypisaniem haseł w których którakolwiek trójka wystąpiła więcej niż jeden raz nie mogę sobie kompletnie poradzić
poszukiwanie takiego samego tekstu powinno wyglądać jakoś tak
std::string str( "There are two needles in this haystack with needles." );
std::string str2( "needle" );
std::size_t found = str.find( str2 );
if( found != std::string::npos )
std::cout << "first 'needle' found at: " << found << '\n';
found = str.find( str2, found + 1, 6 );
if( found != std::string::npos )
std::cout << "second 'needle' found at: " << found << '\n';
przykład z
http://www.cplusplus.com/reference/string/string/find/2.
>> Wypisanie ile razy każda trójka wystąpiła w pliku niby nie powinno być problemem, lecz wyniki zawsze różnią się o 2, 3 albo 1 (czasami się zgadzają)
trudno jest powiedzieć dlaczego program przy każdym wykonaniu zwraca różne wyniki
nie widać elementów które mogłyby na to wpłynąć
jedynym elementem który bym o to podejrzewał to linia
plik >> slowo1 >> slowo2;
być może w pliku hasła są jakieś znaki które są czasami różnie interpretowane
tzn. kończą słowo
może być sytuacja gdzie np. słowo1 = "ADFRABC" a słowo2= <coś co nie jest stringiem>
przy kolejnym wywołaniu słowa są wczytywane inaczej tzn. dzielone
jaki to system operacyjny w tym 32/64 bit ?
jakiego kompilatora (narzędzia) używasz ?
uwaga na boku :
znalazłem na
http://forum.hotfix.pl/webmastering/wczytywanie-z-pliku-tekstowego-do-tablicy-stringow-t10514.html"problem nieciągłości stringa"
nie widzę tekstu, bo nie jestem zalogowany, dlatego nie mogę zrozumieć na czym to polega.
a wcześniej nie spotkałem się z tym problemem
podobnie :
"Widzę że piszesz w C++, a używasz funkcji z C, co nie jest złe. Nie mniej jednak proponuję, użycie nagłówka fstream.h z C++"
z
http://www.cplusplus.com/reference/cstdio/fopen/fopen z std (C++ library)
http://www.cplusplus.com/reference/fstream/ifstream/open/open z fstream (C library)
3.
z treści zadania nie wynika (przynajmniej ja nie widzę) dlaczego równocześnie badasz oba hasła z linii
chyba można to rozdzielić
while( !plik.eof() ) {
plik >> slowo1 >> slowo2;
for( int i = 0; i < 6; i++ )
{
if( slowo1.find( wariacja[ i ] ) != string::npos )
{
zliczanie[ i ] ++;
}
if( slowo2.find( wariacja[ i ] ) != string::npos )
{
zliczanie[ i ] ++;
}
}