Bitte um Hilfe



  • Ich hab ein Problem 😞
    Aufgabenstellung siehe unten 😉
    ist zwar eigentlich net so schwer, aber da ich neu mit C-Programmieren angefangen habe, fällt es mir ziehmlich schwer. Bitte um Hilfe, aber möglichst sehr leicht beschrieben, damit ich auch ein überblick habe, was wann passiert;) danke

    Ich muss eine Funktion Implementieren  
    char \*drehe(char \*satz, int anzschritte);  
    
    welche die Zeichenkette satz um anzschritte Worte rechts herum „rotiert“ und das Ergebnis in eine vorher mit malloc() zu allokierende Zeichenkette schreibt. Die Funktion soll intern den Speicher für den zurückzugebenden String genau passend allokieren.  
    
    ACHTUNG:  
    \- Die Funktion soll alle Zeiger mit * dereferenzieren, nicht mit [].  
    \- Sie dürfen davon ausgehen, dass es sich bei satz immer um korrekt mit '\\0' beendete Zeichenketten handelt.  
    \- Verwenden Sie für die Implementierung Hilfsfunktionen aus string.h (Muß-Anforderung!)  
    
    Beispiel für das Verhalten der Funktion:  
    char *neuersatz;  
    neuersatz = drehe("ene mene mu die tuer ist zu", 2);  
    --\> Der Zeiger neuersatz zeigt nun auf die Zeichenkette  
    "zu ist ene mene mu die tuer"!  
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
    
    DANKESCHOEN :)


  • Zeig mal deinen Ansatz das Problem zu lösen. Das Forum hier ist nicht dazu gedacht Hausaufgaben anderer Leute zu lösen.

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-136013.html



  • fang erstmal mit der grundstruktur an und fang erst dann an zu überlegen wie du es lösen willst, so kommst du wenigstens bissel weiter.

    benutz halt fgets() oder scanf() für die eingabe (Satz und rotation) und übergib es an die funktion, dort packst du deinen satz auf den speicher mittels malloc und verschieb halt die buchstaben um anzschritte

    Edit: wenn du einen code geschrieben hast und nicht weiterkommst kannst ja nochmal was reinposten



  • #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    char* drehe(char* satz, int schritteanz)
    {
        char* my, *tmp;
        size_t len = 0;        
    
            my = (char*)malloc(strlen(satz)+1);
            while (schritteanz--){
                    tmp = strrchr(satz, ' ');
                    strcpy(my+len, len?tmp:tmp+1);
                    len += strlen(tmp)-(len?0:1);
                    *tmp = 0;
            }
            *(my+len) = ' ';
            strcpy(my+len+1, satz); 
            return my; 
    }
    
    int main()
    {
        char str[] = "ene mene mu die tuer ist zu";
            printf("%s\n", drehe(str, 2));
            return 0;
    }
    

    :xmas1:



  • nikola schrieb:

    [cpp]
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    ...

    wo ist die fehlerbeschreibung?
    lass mich raten... schrittanzahl darf nicht grösser sein als die anzahl der wörter?
    :xmas2:



  • net schrieb:

    wo ist die fehlerbeschreibung?
    lass mich raten... schrittanzahl darf nicht grösser sein als die anzahl der wörter?
    :xmas2:

    Schrittanzahl muss hier kleiner als Wortanzahl sein!
    Zu grosse Schrittanzahl kann mann z.B. so abfangen:

    ...
            while (schritteanz--){
                    tmp = strrchr(satz, ' ');
                    if (!tmp)
                            break;
    ...
    

    :xmas1:



  • nikola schrieb:

    Schrittanzahl muss hier kleiner als Wortanzahl sein!
    Zu grosse Schrittanzahl kann mann z.B. so abfangen:
    ...

    ich hätt ja lieber modulo genommen statt abzubrechen.
    naja, 'ne 3 minus kriegste bestimmt 😉
    aber wenigstens konnteste deine hausaufgabe selber lösen 👍
    :xmas2:



  • net schrieb:

    aber wenigstens konnteste deine hausaufgabe selber lösen 👍
    :xmas2:

    Also ich bezweifle ja, dass nikola == studentin ist 😉



  • TactX schrieb:

    Also ich bezweifle ja, dass nikola == studentin ist 😉

    ich auch, aber psssst... 😉



  • net schrieb:

    TactX schrieb:

    Also ich bezweifle ja, dass nikola == studentin ist 😉

    ich auch, aber psssst... 😉

    und ich bezweifele, dass studentin eine student .. in ist 😉



  • elise schrieb:

    net schrieb:

    TactX schrieb:

    Also ich bezweifle ja, dass nikola == studentin ist 😉

    ich auch, aber psssst... 😉

    und ich bezweifele, dass studentin eine student .. in ist 😉

    Das sowieso. Frauen in einem Programmierforum... tststs... geht ja wohl mal garnicht :p



  • never 😉



  • elise schrieb:

    und ich bezweifele, dass studentin eine student .. in ist 😉

    stimmt. frauen proggen nicht.
    edit: zu spät.



  • net schrieb:

    edit: zu spät.

    war klar *duck* 😉



  • elise schrieb:

    net schrieb:

    edit: zu spät.

    war klar *duck* 😉

    ich weiss, du hasst mich 😉



  • net schrieb:

    elise schrieb:

    net schrieb:

    edit: zu spät.

    war klar *duck* 😉

    ich weiss, du hasst mich 😉

    nö, wozu..



  • Sollten offensichtliche Schnorrerthreads (wer glaubt wirklich noch, dass "weibliche" Nicknames hier besonderes Mitleid oder erweiterte Hilfsbereitschaft auslösen ?) nicht gleich in der Versenkung verschwinden ?
    (Test auf Anteil der Worte "Bitte", "Hilfe", "dringend" im Threadtitel würden ja schon reichen 😃 )

    Ich fände es ja durchaus nicht schlecht, wenn hier nur Registrierte posten (und evtl. erst nach einer Karenzzeit neue Threads erstellen) dürften ...

    Gruß,

    Simon2.


Anmelden zum Antworten