Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z kodem w C. Tablica znaków

Ostatnio zmodyfikowano 2016-05-03 01:28
Autor Wiadomość
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ć.
C/C++
#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]
P-147894
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:
C/C++
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"
P-147895
kuciax
Temat założony przez niniejszego użytkownika
» 2016-05-03 01:28:42
Nie za bardzo rozumiem ten tok postępowania.
P-147896
« 1 »
  Strona 1 z 1