hallo leute bruche kurz eure hilfe bei einer aufgabe "strrev()"



  • hallo

    also mein problemm lautet:

    Einige Compiler-Hersteller stellen eine Funktion strrev() (=string reverse) mit der Schnittstelle
    char *strrev(char *pstr);
    zur Verfügung. Die Funktion soll einen String "umdrehen", z.B. "Paul" in "luaP" umwandeln. In pstr wird die
    Startadresse der Zeichenkette übergeben, die "umgedreht" werden soll. Das Ergebnis soll die ursprüngliche
    Zeichenkette ersetzen, es wird also kein zusätzlicher Speicher für das Ergebnis benötigt. Die in pstr
    gespeicherte Adresse soll unverändert als Funktionswert zurückgeliefert werden, um eine Verkettung zu
    ermöglichen.
    1. Entwickeln Sie die Funktion strrevind(), die sich genau so verhält wie die beschriebene Funktion strrev(), und
    intern mit Indizes arbeitet, um auf die einzelnen Zeichen zuzugreifen.
    2. Entwickeln Sie zusätzlich die Funktion strrevptr(), die sich genau so verhält wie strrevind(), aber intern mit
    Zeigern arbeitet, die inkrementiert bzw. dekrementiert werden.
    3. Entwickeln Sie mit der Funktion main() ein Testprogramm, mit dem vom Benutzer ein String angefordert
    wird. Dieser String soll in einem char-Array input der Länge 10 gespeichert werden. Die Eingabe soll
    sicherstellen, dass bei der Eingabe eines zu langen Strings maximal 9 Zeichen übernommen werden, damit
    die Arraygrenzen nicht überschritten werden. Die Zeichenkette soll mit strrevind() umgedreht und das
    Ergebnis ausgegeben werden. Die umgedrehte Zeichenkette soll dann mit strrevptr() nochmals
    umgedreht und ausgegeben werden. Beim Aufruf von strrevptr() soll überprüft werden, ob die
    Verkettung richtig funktioniert, d.h. die Funktion den korrekten Funktionswert zurückliefert. Bei der Ein/-
    Ausgabe soll das in den Beispielen (a) und (b) dargestellte Format exakt eingehalten werden (Eingabe zum
    besseren Verständnis kursiv dargestellt):
    Beispiel (a) Beispiel (b)
    String: Paul String: Karl-August
    1 x umgedreht: luaP 1 x umgedreht: uguA-lraK
    2 x umgedreht: Paul 2 x umgedreht: Karl-Augu
    Das gesamte Programm soll vollständig sein und sich ohne Fehlermeldungen und Warnungen übersetzen
    lassen!
    Lösungshinweise:
    Innerhalb der Funktionen strrevind() bzw. strrevptr() benötigen Sie eine Schleife, die beim ersten
    Durchlauf das 1. Zeichen mit dem letzten tauscht, beim 2. Durchlauf das 2. Zeichen mit dem vorletzten usw..
    Beachten Sie, dass die Anzahl der Schleifendurchläufe nur (etwa) halb so groß ist wie die Länge der
    Zeichenkette. Die Schleifensteuerung soll für gerade und ungerade Stringlängen funktionieren. Für das
    Umdrehen von "Paul" nach "luaP" benötigen Sie z.B. 2 Schleifendurchläufe, aber für das Umdrehen von "Eva" in
    "avE" nur 1 Schleifendurchlauf.
    Für den Tausch von jeweils 2 Zeichen setzen Sie am besten eine Hilfsvariable ein und führen einen
    "Dreieckstausch" (s. Skript: Pointer5.c) durch.
    Beachten Sie, dass das 1. Zeichen den Index 0 und das letzte Zeichen den Index strlen(pstr) - 1 hat.
    Das abschließende '\0'-Byte wird nicht in den Tausch einbezogen. Es wird überhaupt nicht bearbeitet, da es
    auch nach dem Umdrehen an der richtigen Stelle steht!

    vorgegeben ist:

    #include <stdio.h> 
    /* weitere includes? */ 
    char *strrevind(char *pstr); 
    char *strrevptr(char *pstr); 
    int main(void) 
    { 
    return 0; 
    } 
    char *strrevind(char *pstr) 
    { 
    } 
    char *strrevptr(char *pstr) 
    { 
    }
    

    kann mir da bite jemand helfen??

    wenigstens die funktionen!

    Danke im v******!



  • hahaha, DIE FUNKTIONEN sollst du alleine machen.
    wenn ich sehe, dass ihm jemand hier was vorkaut, loesch ich das ohne vorwarnung.

    tipp: bei dem strrev mit indizes brauchst du ne for-schleife und beim strrev mit pointern brauchst du nur pointer.
    bei der pointergeschichte musst du pointer inkrementieren und dekrementieren.

    lies das hier, KOMPLETT: http://www.pronix.de/pronix-4.html



  • warum den das??

    warum willst es löschen???? was bist du für einer?

    ich brauche hilfe und nicht dein dummes gelaber?!?!!?!?
    ich brauch die lösung bis morgen und habe keine zeit das ganze durch zu lessen



  • John Doh schrieb:

    ich brauch die lösung bis morgen und habe keine zeit das ganze durch zu lessen

    wir machen keine hausaufgaben.

    sorry.

    bei verstaendnis problemen kannst du gerne einen neuen beitrag aufmachen und wir erklaeren dir gerne alles.

    aber so bitte nicht.



  • es muss ja wohl nen grund geben, warum du nur noch bis morgen zeit hast und es nicht kannst...

    bescheissen gibts nicht, deswegen werde ich alle fertiggerichte loeschen, die hier gepostet werden.

    und damit du mir nicht in den ohren liegst mit "boeser mensch du", hier ein bisschen hilfe:

    bei der loesung der aufgabe, was wuerdest du jetzt zu erst machen oder wissen wollen?


Anmelden zum Antworten