verschlüsseln

Hallo Leute,

ich habe folgendes problem:

ich will eine 4 stellige Zahl eingeben und er soll mir dies Zahlen in Buchstaben umwandeln.

sprich: a=1 b=2 c=3 ...... 0=j

dies ist der code:

for( int i = 3; i >= 0; i--) {
int temp = (int)(zahl / pow( 10, i))%10;
if( temp == 0 & trail == 1)
cout << 'j';
else if( temp != 0) {
cout << (char)(temp + 'a' - 1);
trail = 1;
}
zahl -= (temp*pow( 10, i));
}

Allerdings funktioniert der nur halb. bei der Zahl 6115 rechnet er mir das so um =faad obwohl es 6115 = faae heißen müsste also die letzte zahl wird immer -1 gerechnet.
 
Ich vermute mal ganz stark, dass das ein Rundungsfehler durch das pow ist (bzw. das Dividieren durch pow). Mach die Rechnung doch von hinten her, und pack die einzelnen Zeichen in einen String, den du dann einfach ausgeben kannst. Dann kannst du dir das pow sparen, und nur mit int arbeiten (bzw. % und /).
 
moin


Ich würde das für dich mal eben testen, muss dazu aber wissen wie "trail" definiert ist.


mfg
umbrasaxum
 
moin


Hab das mal so versucht und funktioniert.
Code:
int main( )
{
	int zahl = 6115;
	int temp = 0;

	for( int i = 3; i >= 0; i--)
	{
		temp = (int)(zahl / pow( 10, i))%10 ;//+ 0.5;
		cout << (char)(temp + 'a' - 1);

		zahl -= (temp*pow( 10, i));
	}

	return 0;
}
Wenn es bei dir immernoch nicht geht, nimm mal das + 0.5 mit rein.


mfg
umbrasaxum
 
Zurück