ABrunden in C++

Moin!
Ich hab mal ne Frage, und zwar: Wie kann ich in C++ Integer(also ganze Zahlen) abrunden? Aus 215 soll 200 werden und aus 4987 zB 4000...Weiss jemand, wie man dass bewerkstelligen kann?

Vielen Dank im Vorraus :-)
 
[

in Zehnern auf/abrunden:

y = ganze zahl
x = letzte stelle

if x > 0 & x < 5
y = y - x
else if x >= 5 & x < 10
y = y + (10 - x)

]
################## Edit ##

Sorry, hab mich vertan, das ist ja gar nicht was du wolltest. Du willst, wenn ich das jetzt richtig verstanden habe, die erste Stelle behalten und den Rest abrunden?!

Ich weiss nicht ob es dafür eine eigene Funktion gibt, falls du selbst eine schreiben möchtest:

Lese deine Zahl, Zeichen für Zeichen in ein Array, bestimme die Länge davon und dann

zahl = ziffer[0];

for n=0 to (array_länge - 2) {
zahl = zahl +"0";
}
 
ja das wollte ich;) aber wie lese ich denn die zahl in ein array ein? könntest du mir vlt die komplette syntax geben? aber schonmal vielen dank :)
 
Tut mir leid, ich programmiere leider nicht in C++

Ich denke du musst die Zahl in einen String umwandeln, und dann müsste es eine Funktion geben um den String einzulesen, aber da bin ich überfragt.

Vielleicht hilft ja einer unserer C++-Coder weiter, eine kurze Google-Suche blieb leider ergebnislos.
 
Code:
unsigned int abrunden(unsigned int zahl) {

	unsigned int stellen=1,tmp = zahl;

	while(tmp>9) {
		tmp/=10;
		stellen++;
	}

	tmp=1;
	for(int i=1;i<stellen;i++)
		tmp*=10;

	return (zahl/tmp)*tmp;
}

einstellige zahlen werden hierbei nicht gerundet.
 
Sauber, danke...Genau das meinte ich :-) Da sieht man mal wieder, wie klasse das HaBo ist...Nach 2 Stunden ist das Problem gelöst...

Vielen Dank!
 
Code:
int intfloor(int num, int stepwidth = 0) {
	if (!stepwidth) for (stepwidth = 1; stepwidth * 10 <= num; stepwidth *= 10);   // für intfloor(einstellige_zahl) == 0 einfach "stepwidth = 10"
	return num - (num % stepwidth);     //bei fester Rundungsstufe brauchts nur das hier
}
Geht auch noch kürzer ;)
Arbeitet wie das von ivegotmail (rundet einstellige Zahlen nicht).
 
Zurück
Oben