Ergebnis 1 bis 4 von 4
  1. #1
    Anfänger Avatar von M00rk
    Registriert seit
    28.04.2009
    Beiträge
    14

    Standard programm, das eine eingabe rückwärts ausgibt

    guten abend leute,
    hab mir das buch "c++ objektorientiertes programmieren von anfang an" geholt...
    soweit alles verständlich, bis auf die 12te aufgabe.
    die lautet:
    schreiben sie ein programm, das ein wort über die tastatur einliest und es rückwärts wieder anzeigt. benutzen sie eine for-schleife.

    die lösung lautet:
    Code:
    #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    {
       char wort[21];
       int laenge;
       cout << "\nBitte ein Wort eingeben "
                   "(max. 20 Zeichen)\n>";
       cin >> wort;
       laenge=strlen(wort);
       cout << "\n";
       for (int i=laenge-1; i>=0; i--)
          cout << wort[i];
       cout << "\n";
       return 0;
    }
    bis zur for schleife ist es noch klar, was danach passiert ergibt für mich keinen sinn (i wird deklariert, ist die länge des eingegeben wortes -1. nun wird anscheinend i dekrementiert solange die zahl grösser oder gleich null ist.)

    was ausserdem im buch nicht genannt wird, ist dass man eine variable als anzahl der feldelemente verwenden kann.

    wo ist mein denkfehler

    mfg mark.

  2. #2
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    Zitat Zitat von M00rk Beitrag anzeigen
    was danach passiert ergibt für mich keinen sinn (i wird deklariert, ist die länge des eingegeben wortes -1. nun wird anscheinend i dekrementiert solange die zahl grösser oder gleich null ist.)
    Ein Array startet mit dem Element 0.

    Sagen wir also du hast folgenden String: "a" (ohne die Anführungszeichen).
    Die Länge beträgt 1 Zeichen - und das ist auch was strlen zurückgibt.

    Da "a" aber bei 0 liegt (der Array fängt, wie gesagt, bei 0 an) substrahiert man 1.

    Selbiges gilt für den String "ab": Länge = 2 Zeichen
    Elemente:
    [0] = 'a'
    [1] = 'b' // <---- strlen(der_string) - 1

    Wir können also sagen:
    strlen(der_string) - 1 = Index des letzten Zeichens (sofern der String mindestens ein Zeichen enthält)

    Also macht die Schleife folgendes:
    Code:
    int i = Index des letzten Elements im char-Array
    SOLANGE i GRÖßER GLEICH 0 (das nullte Element gehört mit dazu)
        AUSGABE: der_string[i] (das Zeichen mit dem Index i ausgeben)
        i = i - 1 (i dekrementieren, dh. den Index auf den voranliegenden char setzen)
    /SOLANGE

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

  3. #3
    W32.Lovgate
    Registriert seit
    05.11.2008
    Beiträge
    367

    Standard

    Gut erklärt, das hab ich jetzt sogar verstanden. Jetzt schnall ich auch langsam wofür Arrays [] eigentlich da sind ...
    Geändert von Freak1936 (16.06.2009 um 23:37 Uhr) Grund: rechtschreibung

  4. #4
    Anfänger Avatar von M00rk
    Registriert seit
    28.04.2009
    Beiträge
    14

    Standard

    Danke, jetz versteh ichs

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •