nano-stalker Temat założony przez niniejszego użytkownika |
Błędy w programie "subscript requires array or pointer type", " cannot convert parameter 1 from 'std::string (__cdecl *)(void)' to 'std::string'" itd. » 2015-01-28 14:44:55 Witam. Otóż piszę program "kryptograficzny" na swój sposób ;). Nie potrafię rozwiązać kilku problemów (chyba że wcale źle go napisałem...) , oto log: ------ Build started: Project: Kryptograf v2.0, Configuration: Debug Win32 ------ Kryptograf v2.0.cpp c:\documents and settings\xp\moje dokumenty\visual studio 2010\projects\kryptograf v2.0\kryptograf v2.0\kryptograf v2.0.cpp(159): error C2664: 'std::basic_string<_Elem,_Traits,_Ax>::basic_string(const std::basic_string<_Elem,_Traits,_Ax> &)' : cannot convert parameter 1 from 'std::string [49]' to 'const std::basic_string<_Elem,_Traits,_Ax> &' with [ _Elem=char, _Traits=std::char_traits<char>, _Ax=std::allocator<char> ] Reason: cannot convert from 'std::string [49]' to 'const std::basic_string<_Elem,_Traits,_Ax>' with [ _Elem=char, _Traits=std::char_traits<char>, _Ax=std::allocator<char> ] No constructor could take the source type, or constructor overload resolution was ambiguous c:\documents and settings\xp\moje dokumenty\visual studio 2010\projects\kryptograf v2.0\kryptograf v2.0\kryptograf v2.0.cpp(175): error C2109: subscript requires array or pointer type c:\documents and settings\xp\moje dokumenty\visual studio 2010\projects\kryptograf v2.0\kryptograf v2.0\kryptograf v2.0.cpp(206): error C2664: 'porownaj' : cannot convert parameter 1 from 'std::string (__cdecl *)(void)' to 'std::string' No constructor could take the source type, or constructor overload resolution was ambiguous c:\documents and settings\xp\moje dokumenty\visual studio 2010\projects\kryptograf v2.0\kryptograf v2.0\kryptograf v2.0.cpp(277): warning C4244: 'argument' : conversion from 'time_t' to 'unsigned int', possible loss of data ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== A to część mojego programu w którym "są" te błędy: string tablicaZnakow() { string tab[ 49 ]; tab[ 0 ] = "pozycjazero"; tab[ 1 ] = "a"; tab[ 2 ] = "b"; tab[ 3 ] = "c"; tab[ 4 ] = "d"; tab[ 5 ] = "e"; tab[ 6 ] = "f"; tab[ 7 ] = "g"; tab[ 8 ] = "h"; tab[ 9 ] = "i"; tab[ 10 ] = "j"; tab[ 11 ] = "k"; tab[ 12 ] = "l"; tab[ 13 ] = "m"; tab[ 14 ] = "n"; tab[ 15 ] = "o"; tab[ 16 ] = "u"; tab[ 17 ] = "p"; tab[ 18 ] = "r"; tab[ 19 ] = "s"; tab[ 20 ] = "t"; tab[ 21 ] = "w"; tab[ 22 ] = "x"; tab[ 23 ] = "y"; tab[ 24 ] = "z"; tab[ 25 ] = "A"; tab[ 26 ] = "B"; tab[ 27 ] = "C"; tab[ 28 ] = "D"; tab[ 29 ] = "E"; tab[ 30 ] = "F"; tab[ 31 ] = "G"; tab[ 32 ] = "H"; tab[ 33 ] = "I"; tab[ 34 ] = "J"; tab[ 35 ] = "K"; tab[ 36 ] = "L"; tab[ 37 ] = "M"; tab[ 38 ] = "N"; tab[ 39 ] = "O"; tab[ 40 ] = "U"; tab[ 41 ] = "P"; tab[ 42 ] = "R"; tab[ 43 ] = "S"; tab[ 44 ] = "T"; tab[ 45 ] = "W"; tab[ 46 ] = "X"; tab[ 47 ] = "Y"; tab[ 48 ] = "Z"; tab[ 49 ] = "1"; return tab; }
int porownaj( string tab, string znak, int liczba ) { int a = 0; int kodZnaku; do { a++; if( znak.find( tab[ a ] != string::npos ) ) kodZnaku = a; else kodZnaku = 0; } while( kodZnaku != 0 ); return liczba[ kodZnaku ]; }
int krypt() { int tablicaZnakowZapisanych[ 999 ]; int tablicaLiczb[ 49 ]; string znak, wiadomosc; int liczba; int i = 0; cout << "Tablica liczb:\n" << endl; do { cout << "|"; liczba =( rand() % 49 ) + 0; if( liczba, tablicaLiczb, i == false ) { tablicaLiczb[ i ] = liczba; i++; } cout << tablicaLiczb[ i ]; cout << "|"; cout << "\nWylosowano tablice." << endl; } while( i < 49 ); cout << "Tresc wiadomosci: \n"; getline( cin, wiadomosc ); int dlugosc = wiadomosc.size(); cout << "Dlugosc twojej wiadomosci: " << dlugosc << "/nKod zaszyfrowanej wiadomosci:\n" << endl; for( i; i < dlugosc; i++ ) { znak.insert( 0, wiadomosc, i, i ); tablicaZnakowZapisanych[ i ] = porownaj( tablicaZnakow, znak, liczba ); cout << "|" << tablicaZnakowZapisanych[ i ] << "|"; } return 0; } Proszę o pomoc, bo próbowałem rozwiązać to na różne sposoby... |
|
pekfos |
» 2015-01-28 14:49:41 Zły typ. int porownaj( string tab, string znak, int liczba )
|
Jw. porownaj( tablicaZnakow, znak, liczba );
|
Na pewno wiesz, jak działają tablice i funkcje..? |
|
nano-stalker Temat założony przez niniejszego użytkownika |
» 2015-01-28 15:01:45 Tak mi się zdawało. To jak mam to poprawić? bo nic mi do głowy nie przychodzi |
|
Arteczek |
» 2015-01-28 15:10:06 I dałeś do tablicy 50 elementów zamiast 49 ;) |
|
nano-stalker Temat założony przez niniejszego użytkownika |
» 2015-01-28 15:19:43 Racja dzięki :) Poprawiłem, teraz dlaczego jest tak? ------ Build started: Project: Kryptograf v2.0, Configuration: Debug Win32 ------ Kryptograf v2.0.cpp c:\documents and settings\xp\moje dokumenty\visual studio 2010\projects\kryptograf v2.0\kryptograf v2.0\kryptograf v2.0.cpp(170): error C2107: illegal index, indirection not allowed c:\documents and settings\xp\moje dokumenty\visual studio 2010\projects\kryptograf v2.0\kryptograf v2.0\kryptograf v2.0.cpp(277): warning C4244: 'argument' : conversion from 'time_t' to 'unsigned int', possible loss of data ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
A to jest gdzieś tutaj: int krypt() { int tablicaZnakowZapisanych[ 999 ]; int tablicaLiczb[ 50 ]; string znak, wiadomosc; int liczba; int i = 0; cout << "Tablica liczb:\n" << endl; do { cout << "|"; liczba =( rand() % 49 ) + 0; if( liczba, tablicaLiczb, i == false ) { tablicaLiczb[ i ] = liczba; i++; } cout << tablicaLiczb[ i ]; cout << "|"; cout << "\nWylosowano tablice." << endl; } while( i < 49 ); cout << "Tresc wiadomosci: \n"; getline( cin, wiadomosc ); int dlugosc = wiadomosc.size(); cout << "Dlugosc twojej wiadomosci: " << dlugosc << "/nKod zaszyfrowanej wiadomosci:\n" << endl; for( i; i < dlugosc; i++ ) { znak.insert( 0, wiadomosc, i, i ); tablicaZnakowZapisanych[ i ] = porownaj( znak, liczba ); cout << "|" << tablicaZnakowZapisanych[ i ] << "|"; } return 0; }
Z góry dzięki za pomoc. |
|
pekfos |
» 2015-01-28 19:35:37 Tak jakby masz w komunikacie błędu podany numer linii, więc 'gdzieś wśród tych 34 linii' to trochę mało konkretna informacja.. |
|
nano-stalker Temat założony przez niniejszego użytkownika |
» 2015-01-30 15:54:06 Problem rozwiązał się sam. Dziekuje za pomoc. Zamykam temat. |
|
« 1 » |