Quersummenrechner eines absoluten Anfängers

BIG89

Grünschnabel
Hallo,

also ch habe erst vor ca einer woche angefangen,C++ zu lernen.
Nun versuche ich mein erstes eigenes(also nixx vorgegebenes) , funktionierendes Konsolenprogramm hinzubekommen, welches mir die Quersumme einer 4-stelligen Zahl errechnet und ausgibt.
Leider will das nicht so ganz. Was mache ich falsch bzw wie muss es aussehen mit es funktioniert

Als compiler benutze ich Visual Studio 2008 express.

Code:
#include<iostream>
using namespace std;

void main (void)
{
	char zahl[4]={0,1,2,3};
	cout<<"4er-Zahl eingeben:"		<<endl;
	cin.getline(zahl, 4);
	cout<<"Die Quersumme lautet: "
		<<zahl[0] + zahl[1] ++ zahl[2] + zahl[3];

	cin.clear(); cin.ignore(cin.rdbuf()->in_avail()); cin.get(); 
}

Gruß und danke schonmal,

BIG89
 
du dödel. Dein cin verweist auf keine Variable. Der eingelesene String bringt dir also garnix.
Außerdem könntest dus dir leichter machen mit Int(Ch);
Lies deine Zahl in einen String, prüfe mit isdigit obs wirklich ein integer is und dann machste:

Code:
int qsum = 0;
for(iCount=0;iCount<input.length-1;iCount++){  //input is dein string mit der Zahl, 0 ist der erste Char in dem String,
//length-1 die "Position" des letzten Char im string

  qsum += Int(input[i]);   //qsum ist deine quersumme, Int(Ch) gibt den integer eines chars zurück. x+=a ist wie x = x+a
  }

falls das nit funktioniert könnte es auch sein dass Int(Ch) den ASCII-Wert deines Chars zurückgibt, bin mir da nimmer sicher : )
 
öhm...hä?
ich glaube, ich sollte mir erst noch n paar grundkenntnisse mehr aneignen.
ich verstehe das leider noch nicht ganz bzw garnicht^^
 
du dödel. Dein cin verweist auf keine Variable. Der eingelesene String bringt dir also garnix.
cin ist eine Variable aus der Standardbibliothek, welche BIG89 auch korrekt eingebunden hat. Insofern verstehe ich nicht, was du damit meinst.

Außerdem könntest dus dir leichter machen mit Int(Ch);
Und zu welcher Bibliothek gehört diese Funktion?

Lies deine Zahl in einen String, prüfe mit isdigit obs wirklich ein integer is und dann machste:
Mit isdigit kann man lediglich prüfen, ob ein einzelnes Zeichen eine Ziffer ist (wie der Name ja schon sagt).

@BIG89: Mache dir den Unterschied zwischen dem Zeichen '1' und dem Ganzzahl-Wert 1 klar. Außerdem sollest du dich allgemein mit C-Strings und der Standardbibliothek-Doku vertraut machen (Stichwort Nullterminierung und genaue Bedeutung der Parameter von getline).

Grüße,
Matthias
 
hay..

danke..
ich habe mal gegoogelt, aber irgendwie finde ich nixx zu get/getline usw...

kann mir da wer irgendwas geben(n link oder so?)

gruß
 
ich meine aber getch / getchar aus C. das musste per C library importieren.
Getch funktioniert so, dass es BEI tastendruck das zeichen einließt. man kann sich das wie ein OnClick Event auf konsolenebene vorstellen.
Und wenn du das nutzt kannst du halt immer zeichen für zeichen einlesen, in integer umwandeln und direkt summieren : )

EDIT:
PS: Wenn du mit Windows Libraries arbeiten willst such in der MSDNB oder wie die heißt. da findest alles und ganz flott ; )
 
Methode mit unsigned.
C++:
#include <iostream>

int main( int argc, const char* argv[] ) {
    unsigned zahl, quer = 0;
    
    std::cout << "Zahl: ";
    std::cin >> zahl;
    
    while( zahl != 0 ) {
        quer += zahl % 10;
        zahl /= 10;
    }
    
    std::cout << "Quersumme ist " << quer << std::endl;
    return 0;
}

Methode mit std::string...
C++:
#include <iostream>
#include <string>

int main( int argc, const char* argv[] ) {
    unsigned quer = 0;
    std::string input;
    
    std::cout << "Zahl: ";
    std::getline( std::cin, input );
    
    for( unsigned i = 0; i < input.size(); i++ ) {
        if( std::isdigit( input[i] ) ) {
            quer += input[i] - '0';
        }
    }
    
    std::cout << "Quersumme ist " << quer << std::endl;
    return 0;
}
 
Zurück