Lauflängenkodierung zählt nicht immer korrekt - Bitte Hilfe



  • Hallo zusammen,

    wieder ein neuer Programmierversuch. Mittlerweile versuche ich mich an der Lauflängenkodierung. Der Code zählt aber nicht immer richtig. Leider finde ich den Fehler nicht.

    Gebe ich z. B. kklllkkklllk ein, bekomme ich
    als Ergebnis: $2k$3l$3k$3lk

    Anbei der Code:

    #include <stdio.h>
    #include <conio.h>
    #include <string.h>

    main()
    {
    int i,j,cnt,l,count[50]={0};
    char str[50];

    printf("Bitte Buchstaben eingeben: ");
    scanf("%s",str);
    printf("\n\tOriginal String: %s",str);
    printf("\n\n\tLauflaengenkodierung: ");
    l = strlen(str);
    for(i=0;i< l;i*=1)
    {
    j = 0;
    count[i] = 1;
    do
    {
    j++;
    if(str[i+j] == str[i])
    count[i]++;
    }while(str[i+j]==str[i]);
    if(count[i]==1)
    printf("%c",str[i++]);
    else
    {
    printf("$%d%c",count[i],str[i]);
    i += count[i];
    }
    }
    getch();
    }

    Vielen Dank für die Hilfe.



  • #include <stdio.h> 
    #include <conio.h> 
    #include <string.h> 
    
    main() 
    { 
        int i,j,cnt,l,count[50]={0}; 
        char str[50]; 
    
        printf("Bitte Buchstaben eingeben: "); 
        scanf("%s",str); 
        printf("\n\tOriginal String: %s",str); 
        printf("\n\n\tLauflaengenkodierung: "); 
        l = strlen(str);
    
        for(i=0;i< l;i*=1) 
        { 
            j = 0; 
            count[i] = 1; 
            do 
            { 
                j++; 
                if(str[i+j] == str[i]) 
                    count[i]++; 
            }while(str[i+j]==str[i]); 
    
            if(count[i]==1) 
                printf("%c",str[i++]); 
            else 
            { 
                printf("$%d%c",count[i],str[i]); 
                i += count[i]; 
            } 
        } 
        getch(); 
    }
    

    Das ist kein C++, das ist reines C, du benutzt nicht mal int main() . Könnte das jemand verschieben?



  • Falls du glaubst, C++ gelernt zu haben, muss ich dich leider enttäuschen. Schmeiß dein Buch und/oder Tutorial weg und schnapp dir ein richtiges Buch.

    Weil du hier in einem C++ Forum geschrieben hast, bist du sicherlich daran interessiert, den möglichen Bufferoverflow durch C++ Mittel zu verhindern. Das kannst du machen, indem du std::string statt char[] und std::cin statt scanf verwendest.

    Und sonst würde ich dir empfehlen, dich mit einem Debugger vertraut zu machen.



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum C (C89 und C99) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • freewibes schrieb:

    Gebe ich z. B. kklllkkklllk ein, bekomme ich
    als Ergebnis: $2k$3l$3k$3lk

    Unde was soll rauskommen?


Log in to reply