Hi!
Wie kann ich aus einer Variablen vom Typ int die Quersumme berechnen?
Zoltan Gast |
int main(void )
{
int z = 12345,x,y=0;
for(x=z;x;y+=x%10,x/=10);
printf( "Quersumme von %d ist: %d\n", z, y );
return 0;
}
unsigned int quersumme( unsigned int n )
{
return n < 10 ? n : n % 10 + quersumme( n / 10 );
}
@...: Ein vollständiges Programm wäre ja wohl angebracht:
int main( int argc, char **argv )
{
int z = 12345;
if( argv )
printf( "quersumme von %d: %d\n", z, main( z, 0 ) );
else
return argc < 10 ? argc : argc % 10 + main( argc / 10, 0 );
return 0;
}
hier mal eine schnellere Version :
#include <iostream>
template<int val1,int val2>
struct TGreaterEqual
{
enum { res = (val1 >= val2 ? 1 : 0), };
};
template<int val1,int gt> struct _Tquersumme;
template<int val1>
struct _Tquersumme<val1,0> {
enum { res = val1, };
};
template<int val1>
struct _Tquersumme<val1,1> {
enum { res = val1 % 10 + _Tquersumme<val1 / 10,TGreaterEqual<val1,10>::res >::res, };
};
template<int val1>
struct Tquersumme {
enum { res = _Tquersumme<val1,TGreaterEqual<val1,10>::res >::res };
};
int main(int argc, char* argv[])
{
std::cout << Tquersumme<135>::res << "\n";
std::cout << Tquersumme<937>::res << "\n";
std::cout << Tquersumme<32784>::res << "\n";
std::cout << Tquersumme<53209>::res << "\n";
char e;
std::cin >> e;
return 0;
}
« Fortran Format | [VB] dynamisch ein(e) Linie/Rechteck zeichnen » | ||