Problem z kodem w C. Tablica znaków
Ostatnio zmodyfikowano 2016-05-03 01:28
kuciax Temat założony przez niniejszego użytkownika |
Problem z kodem w C. Tablica znaków » 2016-05-03 00:59:18 Program sprawdza, czy dwa wyrazy są anagramami. Jednak gubi się gdy wpisuje sie słowa : "kot" "koy" czyli takie które mają na końcu inne literki. Prosze o pomoc, bo nie wiem jak to zmienić. #include <stdio.h> #include <string.h>
void czyanagram( char tab1[], char tab2[] ) { if( strlen( tab1 ) == strlen( tab2 ) ) { int i, n, flaga; int znak_tab2; int znak_tab1; for( i = 0; i <( strlen( tab1 ) - 1 ); i++ ) flaga = 0; znak_tab1 = tab1[ i ]; for( n = 0; n <( strlen( tab2 ) - 1 ) && flaga == 0; n++ ) znak_tab2 = tab2[ n ]; if( znak_tab1 == znak_tab2 ) flaga = 1; if( flaga == 0 ) printf( "to sa anagramy" ); else printf( "to nie sa anagramy" ); } else printf( "to nie sa anagramy" ); }
int main() { char s1[ 100 ]; char s2[ 100 ]; scanf( "%99s", s1 ); scanf( "%99s", s2 ); czyanagram( s1, s2 ); return 0; }
[/i] |
|
Gibas11 |
» 2016-05-03 01:04:11 '\0' nie jest wliczane do ciągu znaków, więc pomiń to - 1 w pętlach. Tak wlg toto jest w C a nie C#. EDIT: Tak właściwie to Twoje rozwiązanie nie bardzo ma sens, np. ten kawałek: for( i = 0; i <( strlen( tab1 ) - 1 ); i++ ) flaga = 0;
Co to ma robić? Jak dla mnie to powinno się robić tak: 1. wczytać ciąg 1. 2. wczytać ciąg 2. 3. Dla każdego znaku ciągu 1 poszukać pierwszego wystąpienia tego samego znaku w ciągu 2. (ZNALEZIONE – 4, NIE – 5). 4. Ustawić ten znak w ciągu 2. na '\0'. 5. Przerwać program i wypisać "Nie anagramy". 6. Jeżeli w ciągu 2. jest jakikolwiek znak nie będący '\0', należy wypisać "Nie anagramy" i przerwać sprawdzanie. 7. Wypisać "Anagramy" |
|
kuciax Temat założony przez niniejszego użytkownika |
» 2016-05-03 01:28:42 Nie za bardzo rozumiem ten tok postępowania. |
|
« 1 » |