[C++] Tablica znaków (szyfrowanie)
Ostatnio zmodyfikowano 2012-04-09 21:43
Admixior |
» 2012-04-09 20:24:52 Zauważ zmianę " -> ' for() if( tekstIn[ z ] == 'a' || tekstIn[ z ] == 'A' ) tutaj wypisywanie w morsie dla litery "a" itd... |
|
Schulze13 Temat założony przez niniejszego użytkownika |
» 2012-04-09 20:28:27 Tylko że w else mam wypisywanie kodu Morse'a, a w if sprawdzanie kolejnych liter. |
|
Admixior |
» 2012-04-09 20:33:05 wklej tutaj tę pętlę bo nie mogę pojąć o co chodzi |
|
Schulze13 Temat założony przez niniejszego użytkownika |
» 2012-04-09 20:40:47 Ok z edytowałem kod char MorseaSzyfr() { char tekstIn[ 514 ] = { '\0' }; cout << "Wpisz tekst (maksymalnie 512 znak" << char( 243 ) << "w):" << endl; cin.get( tekstIn, 512 ); for( int z = 0; z < 512; z++ ); { if(( tekstIn[ 'z' ] == 'a' ) ||( tekstIn[ 'z' ] == 'A' ) ) { cout << char( 149 ) << char( 151 ); } else { } } cout << tekstIn; return 0; }
|
|
Admixior |
» 2012-04-09 20:45:00 Jeśli się odnosisz do zmiennych to piszesz bez cudzysłowiu (nawet pojedynczego) czyli tak "tekstIn[ z ]" PS mógłbyś to zrobić na switch switch( tekstIn[ z ] ) { case 'a': case 'A': cout << char(...); break; case 'b': case 'B': cout << char(...); break; } |
|
Schulze13 Temat założony przez niniejszego użytkownika |
» 2012-04-09 20:47:02 Tylko, że tekstIn[ 'z' ] mi kompilator załapał... chyba. |
|
Admixior |
» 2012-04-09 20:50:29 załapał bo 'z' w kodowaniu ascii (zobacz na wikipedię) ma kod 122 więc zawsze brało 122 element tablicy (123 w indeksowaniu od 0) Tak nie może być. Jak wprowadzałeś krótki txt to tam były same głupoty. A swoją drogą nie zawsze będzie 512 liter w tablicy więc powinieneś przerwać gdy się skończą normalne znaki @edit: char MorseaSzyfr() { char tekstIn[ 514 ] = { '\0' }; cout << "Wpisz tekst (maksymalnie 512 znak" << char( 243 ) << "w):" << endl; cin >> tekstIn; for( int z = 0; z < 512; z++ ); { if(( tekstIn[ z ] == 'a' ) ||( tekstIn[ z ] == 'A' ) ) { cout << char( 149 ) << char( 151 ); } else if(( tekstIn[ z ] == 'b' ) ||( tekstIn[ z ] == 'B' ) ) { } else if( tekstIn[ z ] == 0 ) { break; } else { } } cout << tekstIn; return 0; } lub char MorseaSzyfr() { char tekstIn[ 513 ]; cout << "Wpisz tekst (maksymalnie 512 znak" << char( 243 ) << "w):" << endl; cin.get( tekstIn, 512 ); bool kontynuuj = true for( int z = 0;( z < 512 ) && kontynuuj; z++ ); { switch( tekstIn[ z ] ) { case 'a': case 'A': cout << char(...); break; case 'b': case 'B': cout << char(...); break; case 0: kontynuuj = false; default: } } cout << tekstIn; return 0; } |
|
Schulze13 Temat założony przez niniejszego użytkownika |
» 2012-04-09 20:55:46 Te 512 znaków fix'ne kiedy indziej, bo najważnijszym problemem jest zmiana wypisanie każdego znaku tablicy main.cpp: In function 'char MorseaSzyfr()': main.cpp:24:26: error: name lookup of 'z' changed for ISO 'for' scoping [-fpermissive] main.cpp:24:26: note: (if you use '-fpermissive' G++ will accept your code) make[2]: *** [build/Debug/MinGW-Windows/main.o] Error 1 make[1]: *** [.build-conf] Error 2 make: *** [.build-impl] Error 2
poza tym o co z chodzi z '-fpermissive' |
|
1 « 2 » 3 4 |