• hi users
    bin neu hier im Forum,hab nähmlich vor ein paar wochen mit c++ angefangen.
    Jetzt bin ich an dem Punkt angekommen wo ich einfach nicht mehr weiterkomme =(

    Die Aufgabe ist:

    Entwickeln Sie eine C++-Anwendung, die den Anwender zur Eingabe einer vierstelligen Zahl auffordert. Das Programm soll daraufhin die Quersumme der vierstelligen Zahl errechnen und das Ergebnis auf den Bildschirm ausgeben.

    Meine .cpp Datei sieht im mom so aus

    #include <iostream>
    #include <conio.h>
    using namespace std;

    int main()
    {
    char x[4];

    cout << "Schreibe eine 4stellige Zahl" << endl;
    cin.getline(x,sizeof(x));

    char y = x[0] + x[1] + x[2] + x[3];

    cout << y << endl;

    getch();
    }

    da kommt immer ein Fehler in der Konsole
    z.B.
    2222
    =
    ô

    Ich hoffe ihr könnt mir helfen =(

    mfg

  • Punkt 1 ist mal, dass du mit getLine null-terminierte Strings erhältst, dein Array muss also Zahlenlänge + 1 groß sein, in deinem Fall erhältst du nämlich nur 3 Ziffern + \0.

    2) Wenn du Ziffern addieren möchtest ist der char-Wert davon nicht sinnvoll. Die Ziffer 2 entspricht dem char-Wert 50 beispielsweise. Die Konvertierung erfolgt mit - '0' (du ziehst den Char-Wert von 0 (48) ab und erhältst damit den Ziffernwert) oder int atoi(char*), wobei das anscheinend nicht für einzelne chars empfohlen wird, sondern nur für Strings (auch wenn es rein formal vom Parameter her ginge).

    Sieht dann dementsprechend aus:

    Falls du die Warnung bei der for-Schleife wegbekommen möchtest (die mir Eclipse anzeigt) kannst du die Zählvariable als unsigned int definieren.

    PS: In C/C++ mit noch weniger Gewähr als sonst :p

    10 Mal editiert, zuletzt von polymorph10 (11. Dezember 2010 um 02:30)

  • zusätzlich zu dem, was polymorph geschrieben hat, musst du natürlich noch einige dinge beachten:
    - was wenn der benutzer mehr als 4 zahlen eingibt? (x[4] soll '\0' sein)
    - oder weniger als 4 zahlen, bzw. andere zahlen (x[0] bis x[3] müssen ascii-werte zwischen '0' und '9' haben)

    "All through my life I've had this strange unaccountable feeling that something was going on in the world, something big, even sinister, and no one would tell me what it was."
    "No," said the old man, "that's just perfectly normal paranoia. Everyone in the Universe has that."

    &#128513;&#128514;&#128515;&#128516;&#128517;&#128518;&#128519;&#128520;&#128521;&#128522;&#128523;&#128524;&#128525;&#128526;&#128527;&#128528;&#128530;&#128531;&#128532;&#128534;&#128536;&#128538;&#128540;&#128542;&#128544;&#128545;&#128546;&#128547;&#128549;&#128552;&#128553;&#128554;&#128555;&#128557;&#128560;&#128561;&#128562;&#128563;&#128565;&#128566;&#128567;

  • klappt! Danke euch beiden =)
    aber verstehe nicht wieso dort -1 steht
    char x[5];

    cout << "Schreibe eine 4stellige Zahl" << endl;
    cin.getline(x,sizeof(x));

    int y = 0;

    for(int i = 0; i < sizeof(x) - 1; i++)
    {
    y += (x[i] - '0');
    }

    cout << y << endl;

    getch();


    mfg

    Einmal editiert, zuletzt von BreakBlack (11. Dezember 2010 um 10:27)

  • weil das letzte zeichen für den string-terminator reserviert ist, sizeof(x) gibt dir also 5, du willst aber nur die ersten 4 zahlen aufsummieren.

    "All through my life I've had this strange unaccountable feeling that something was going on in the world, something big, even sinister, and no one would tell me what it was."
    "No," said the old man, "that's just perfectly normal paranoia. Everyone in the Universe has that."

    &#128513;&#128514;&#128515;&#128516;&#128517;&#128518;&#128519;&#128520;&#128521;&#128522;&#128523;&#128524;&#128525;&#128526;&#128527;&#128528;&#128530;&#128531;&#128532;&#128534;&#128536;&#128538;&#128540;&#128542;&#128544;&#128545;&#128546;&#128547;&#128549;&#128552;&#128553;&#128554;&#128555;&#128557;&#128560;&#128561;&#128562;&#128563;&#128565;&#128566;&#128567;

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!