Wie berechne ich Quersummen
-
Hallo, ich wollte mal fragen mie man unter C++ Quersummen berechnen kann, ich hab gelesen dass ich das mit dem Modulo-Operator machen kann, aber ich weiss net wie.

-
Z.B. so:
for(int p=0;p<länge(zahl);++p) sum+=(zahl/pow(10,p))%10;(klar, es gibt sicher elegantere Wege)
-
Danke dir!

-
Hier ein Beispiel ohne die dubiose Funktion "länge":
int quersumme(int zahl) { int ergebnis = 0; if(zahl < 0) zahl =- zahl; while(zahl != 0) { ergebnis += (zahl % 10); zahl /= 10; } return ergebnis; }
-
int quersumme (int n) { int result = 0; for (int i = 10; n; i *= 10) { result += (n % i) / (i / 10); n -= n % i; } return result; }Oder:
template <int n> struct quersumme { static const int value = n % 10 + quersumme<n / 10>::value; }; template <> struct quersumme<0> { static const int value = 0; };
-
noch 'ne Lösung
#include <numeric> // accumulate #include <sstream> #include <string> template< typename T > std::size_t quersumme( const T& x ) { std::stringstream buf; buf << x; const std::string zahl = buf.str(); return std::size_t( std::accumulate( zahl.begin(), zahl.end(), -int('0') * int(zahl.size()) ) ); }Gruß
Werner