/* * Programmieren fuer Physiker, SS 2010 * * Stellenwertsystem: * Gibt eine eingegebene Zahl in einer anderen Basis aus * nun mit Buchstabenausgabe fuer Stellenwerte >=10 */ #include #include using namespace std ; // gib Stellenwert d als Zeichen 0..9,A..Z zurueck char char_for_digit(int d) { if (0<=d && d<=9) return char(int('0')+d) ; if (10<=d && d<=36) return char(int('A')+d-10) ; cout << " Keine Darstellung fuer Stellenwert: " << d << endl ; return '?' ; } int main() { // Eingabe der Zahl und der Basis cout << "Salut. Eine Zahl bitte: " ; long zahl ; cin >> zahl ; cout << "In welcher Basis soll ich die Zahl darstellen: " ; int basis ; cin >> basis ; // Stellen berechnen int st[100] ; // Speichere die einzelnen Stellen ab // Index 0: niederwertigste Stelle int anzst = 0 ; int z = zahl ; // Arbeite mit Kopie von zahl, da z veraendert wird do { int s=z%basis ; st[anzst]=s ; z /= basis ; anzst++ ; // if (anzst>=100) ... } while (z>0) ; cout << "Stellenanzahl in der neuen Basis " << basis << " ist " << anzst << endl ; // Nun die Stellen ausgeben, hoechstwertigste zuerst cout << zahl << " [10] = " ; for( int i=anzst-1; i>=0; i--) cout << char_for_digit(st[i]) ; cout << " [" << basis << "]" << endl ; }