c-uebungen/Assignment_021/solution/union.c

49 lines
1.1 KiB
C

#include <stdio.h>
typedef union {
int ganzzahl;
float gleitkommazahl;
} number_t;
typedef enum {
GANZZAHL,
GLEITKOMMAZAHL
} number_type;
void print_number(number_t zahl, number_type typ) {
switch (typ) {
case GANZZAHL:
printf("Ganzzahl: %d\n", zahl.ganzzahl);
break;
case GLEITKOMMAZAHL:
printf("Gleitkommazahl: %.2f\n", zahl.gleitkommazahl);
break;
default:
printf("Ungültiger Typ\n");
break;
}
}
int main() {
number_t zahl;
number_type typ;
printf("Wählen Sie den number_type (0 für Ganzzahl, 1 für Gleitkommazahl): ");
scanf("%d", (int*)&typ); // Eingabe als int, dann Umwandlung in enum number_type
if (typ == GANZZAHL) {
printf("Geben Sie eine Ganzzahl ein: ");
scanf("%d", &zahl.ganzzahl);
} else if (typ == GLEITKOMMAZAHL) {
printf("Geben Sie eine Gleitkommazahl ein: ");
scanf("%f", &zahl.gleitkommazahl);
} else {
printf("Ungültiger Typ\n");
return 0;
}
print_number(zahl, typ);
return 0;
}