1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Bitte helfen =(

  • BreakBlack
  • 11. Dezember 2010 um 01:03
  • Unerledigt
  • BreakBlack
    2
    BreakBlack
    Mitglied
    Punkte
    20
    Beiträge
    3
    • 11. Dezember 2010 um 01:03
    • #1

    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

  • polymorph10
    5
    polymorph10
    Mitglied
    Reaktionen
    20
    Punkte
    270
    Beiträge
    50
    • 11. Dezember 2010 um 02:17
    • #2

    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:

    Code
    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();
    Alles anzeigen

    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)

  • sutupud
    13
    sutupud
    Mitglied
    Reaktionen
    59
    Punkte
    1.659
    Beiträge
    320
    • 11. Dezember 2010 um 09:58
    • #3

    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;

  • BreakBlack
    2
    BreakBlack
    Mitglied
    Punkte
    20
    Beiträge
    3
    • 11. Dezember 2010 um 10:20
    • #4

    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)

  • sutupud
    13
    sutupud
    Mitglied
    Reaktionen
    59
    Punkte
    1.659
    Beiträge
    320
    • 11. Dezember 2010 um 10:32
    • #5

    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;

  • BreakBlack
    2
    BreakBlack
    Mitglied
    Punkte
    20
    Beiträge
    3
    • 11. Dezember 2010 um 10:35
    • #6

    Danke habs jetzt verstanden =)

    mfg

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

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

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung