Programm zur Berechnung der Quersumme

Hallo zusammen, 

ich schriebe gerade ein Programm zur Berechnung der Quersummer eine beliebigen ganzen Zahl und aus irgendeinem Grund kommt immer „0“ raus… ich finde den Fehler nicht

Vielleciht kann mir ja jemand helfen :smile:

#include <iostream>
using namespace std;

int quer(int zahl) 
{
int quersum; 
int stelle;
bool end = false; 

while (end = false)
{
stelle = zahl % 10;

if (stelle == 0 && zahl / 10 == 0) 
{
return quersum;
end = true;
}
else
{
quersum += stelle; 
zahl = zahl/10;
}
}
}
int main ()
{
int zahl;
cout << „Bitte geben Sie eine ganzzahlige Zahl ein deren Quersumme Sie ermitteln moechten!“ << endl; 
while (!(cin >> zahl))
{
cout << "Das war leider keine ganze Zahl! Probieren sie es erneut! > ";
cin.clear();
cin.ignore(256,’\n’);
}
cout << "Die Quersumme betraegt " << quer(zahl) << endl;
system („pause“);
return 0;
}

vielen dank

Hallo,

  1. den Code mit kapseln

  2. Warnungen des Compilers einschalten und wenn nicht klar ist, was der sagen will, dann fragen.

    #include <iostream>
    using namespace std;

    int quer(int zahl) 
    {
    int quersum; 
    int stelle;
    bool end = false; 

    while (end = false) /*

    vermutlich ist Dein Code durch das Probieren sehr kompliziert geworden. Einfacher wäre sowas wie

      while(zahl)
      {
      quersumme += zahl%10; /\* 
     daher nach dem Verstehen von Code allein fürs Verstehen erstmal refakturieren :wink:
     
     Gruß
     achim
    

Hi,

in Vergleichen mit einer Konstanten, schreibe immer die Konstante zuerst. Dann würde schon der Compiler bei

while(false = end)

anmerken, dass diese Zuweisung nicht möglich ist. Du willst

while(false == end)

schreiben.

Gruß, Lutz

danke für eure Antworten…

haben mir sehr geholfen und es geht jetzt :smile:

habe das geändert:

int quersum=0; 
int stelle;
bool end = false;
while (false == end)

und es geht jetzt!!

weiß zwar immernoch nicht so genau wo hier der Fehler liegt:

quersum += stelle;&nbsp; /\* \<-- auch hier ist ein fundamentaler Fehler

vielleichst kannst du es mir noch verraten Achim.

aber vielen Dank für eure Antworten.

lg patte

Hallo Patte,

habe das geändert:

int quersum =0

da du beide Fehler korrigiert hast, gibt es keinen weiteren. Ein guter Compiler in hoher Warnstufe oder z.B. Lint zum prüfen des Programms wird bei

 quersum += stelle;&nbsp; /\* 
etwas anmerken wie: "quersum nicht initialisiert vor erster Verwendung". 
Da die Intention ja eine beliebige sein konnte, tritt der Fehler erst an dieser Stelle auf, auch wenn meist zusätzlich an die Zeile der Definition verwiesen wird.

Gruß
achim