/* ---------------------------------------------------------------------------- // Figure 7.17: Number conversion. // Convert an integer to a selected base and print using place-value notation. // ---------------------------------------------------------------------------- */ #include "tools.h" void main( void ) { long n; /* input: the number to convert */ short base; /* input: base to which we will convert n */ short rhdigit; /* right-hand digit of n-prime */ int power; /* loop counter */ banner(); printf( " Read an integer and express in a given base.\n" " Please enter a base between 2 and 10: " ); scanf( "%hi", &base ); if (base < 2 || base > 10) fatal( " Base is not in required range." ); printf( " Enter the number to convert: " ); scanf( "%li", &n ); if (n < 1) fatal( " Number must be greater than 0." ); /* ------------ Generate digits of converted number, right to left. */ for (power = 0; n != 0; ++power) { if (power == 0) { printf( "\n%12li = ", n); } else { printf( " + "); } rhdigit = n % base; /* Isolate right-hand digit of n. */ n /= base; /* then eliminate right-hand digit. */ printf( "%2hi * %hi^%i \n", rhdigit, base, power ); } bye(); }