![]() ![]() | chars/number-in-base.c - Et C program der omregner et tal fra titalsystemet til et andet talsystem og udskriver resultatet. | Lektion 10 - slide 10 : 51 Program 2 |
#include <stdio.h> #define MAX_BASE_SUPPORTED 36 void print_in_base(int, int); int main(void) { int i, n, base; printf("THIS PROGRAM CONVERTS DECIMAL NUMBERS " "TO NUMBERS IN ANOTHER BASE (FROM 2 TO 36).\n\n"); for (i = 1; i <= 5; i++){ printf("Enter positive decimal number " "and number base (at least two): "); scanf(" %d %d", &n, &base); if ((n > 0) && (base >= 2) && (base <= MAX_BASE_SUPPORTED)){ print_in_base(n, base); printf("\n"); } else printf("Illegal input. Try again\n"); } return 0; } /* Convert the decimal number n to base and print the result */ void print_in_base(int n, int base){ int ciffer; if (n > 0){ ciffer = n % base; /* find least significant ciffer */ /* RECURSIVELY, find and print most significant ciffers */ print_in_base(n / base, base); /* print least significant ciffer */ if (ciffer >= 0 && ciffer <= 9) putchar('0' + ciffer); else if (ciffer >= 10 && ciffer <= MAX_BASE_SUPPORTED) putchar('a' + ciffer - 10); else putchar('?'); } }