Ausgabe der umgewandelten Zahl
In diesem letzten Schritt verbessern wir unser Basisumrechnungsprogramm, indem wir umfassendere Ausgabe- und Formatierungsoptionen hinzufügen, um die umgewandelte Zahl anzuzeigen.
Öffnen Sie die vorhandene Datei und aktualisieren Sie den Code:
cd ~/project
nano base_converter.c
Aktualisieren Sie den Code mit verbesserten Ausgabe- und Formatierungsfunktionen:
#include <stdio.h>
#include <string.h>
// Funktion zur Umrechnung von Dezimal in eine beliebige Basis
void convertToBase(int number, int base, char *result) {
int index = 0;
char digits[] = "0123456789ABCDEF";
int original = number; // Ursprüngliche Zahl für die Anzeige speichern
// Sonderfall 0 behandeln
if (number == 0) {
result[index++] = '0';
result[index] = '\0';
return;
}
// Umrechnung mit Division und Resten
while (number > 0) {
int remainder = number % base;
result[index++] = digits[remainder];
number = number / base;
}
// Zeichenkette umkehren
result[index] = '\0';
for (int i = 0, j = index - 1; i < j; i++, j--) {
char temp = result[i];
result[i] = result[j];
result[j] = temp;
}
}
// Funktion zur Ausgabe detaillierter Umrechnungsinformationen
void printConversionInfo(int decimal, int base, const char *converted) {
printf("\n--- Number Conversion Details ---\n");
printf("Original Number (Decimal): %d\n", decimal);
printf("Target Base: %d\n", base);
printf("Converted Number: %s\n", converted);
// Zusätzliche Basisdarstellungen
printf("\nBase Representations:\n");
printf(" Decimal: %d\n", decimal);
// Binäre Darstellung
if (base!= 2) {
char binaryResult[33];
convertToBase(decimal, 2, binaryResult);
printf(" Binary: %s\n", binaryResult);
}
// Hexadezimale Darstellung
if (base!= 16) {
char hexResult[9];
convertToBase(decimal, 16, hexResult);
printf(" Hexadecimal: %s\n", hexResult);
}
}
int main() {
int number, base;
char result[33]; // Max. 32 Bits + Null-Terminator
// Benutzer auffordern, die Dezimalzahl einzugeben
printf("Enter a decimal number to convert: ");
scanf("%d", &number);
// Benutzer auffordern, die Zielbasis einzugeben
printf("Enter the target base (2-16): ");
scanf("%d", &base);
// Basis-Eingabe überprüfen
if (base < 2 || base > 16) {
printf("Invalid base. Please enter a base between 2 and 16.\n");
return 1;
}
// Zahl umrechnen
convertToBase(number, base, result);
// Detaillierte Umrechnungsinformationen ausgeben
printConversionInfo(number, base, result);
return 0;
}
Kompilieren und starten Sie das Programm:
gcc base_converter.c -o base_converter
./base_converter
Beispielausgabe:
Enter a decimal number to convert: 42
Enter the target base (2-16): 16
--- Number Conversion Details ---
Original Number (Decimal): 42
Target Base: 16
Converted Number: 2A
Base Representations:
Decimal: 42
Binary: 101010
Hexadecimal: 2A
Code-Erklärung:
- Hinzufügen der Funktion
printConversionInfo()
zur Ausgabe detaillierter Umrechnungsinformationen
- Anzeige der ursprünglichen Dezimalzahl, der Zielbasis und des umgewandelten Ergebnisses
- Einbeziehung zusätzlicher Basisdarstellungen (binär und hexadezimal)
- Bedingte Ausgabe alternativer Basisdarstellungen, um Redundanzen zu vermeiden
- Bereitstellung einer informativeren und lehrreichen Ausgabe