hallo leute bruche kurz eure hilfe bei einer aufgabe "s

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • hallo leute bruche kurz eure hilfe bei einer aufgabe "s

    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:



    Quellcode

    1. #include <stdio.h>
    2. /* weitere includes? */
    3. char *strrevind(char *pstr);
    4. char *strrevptr(char *pstr);
    5. int main(void)
    6. {
    7. return 0;
    8. }
    9. char *strrevind(char *pstr)
    10. {
    11. }
    12. char *strrevptr(char *pstr)
    13. {
    14. }
    15. Code:
    16. #include <stdio.h>
    17. /* weitere includes? */
    18. char *strrevind(char *pstr);
    19. char *strrevptr(char *pstr);
    20. int main(void)
    21. {
    22. return 0;
    23. }
    24. char *strrevind(char *pstr)
    25. {
    26. }
    27. char *strrevptr(char *pstr)
    28. {
    29. }
    Alles anzeigen


    kann mir da bite jemand helfen??

    wenigstens die funktionen!

    Danke im vorraus