#include #include #include #define MAX 100 // Maximale Anzahl an Zahlen // Struktur zur Speicherung einer Zahl mit Vorkomma- und Nachkommateil typedef struct { int vorkomma; // Ganzzahliger Teil vor dem Komma int nachkomma; // Nachkommateil als ganze Zahl int nachstellen; // Anzahl der Nachkommastellen } Kommazahl; int main() { Kommazahl zahlen[MAX]; // Array zur Speicherung aller eingegebenen Zahlen char eingabe[100]; // Eingabepuffer int anzahl = 0; // Zähler für Anzahl der eingegebenen Zahlen // Eingabephase printf("Gib Deine Kommazahlen ein (Abschluss mit Leerzeile)\n"); while (fgets(eingabe, sizeof(eingabe), stdin)) { if (eingabe[0] == '\n') break; // Abbruch bei Leerzeile Kommazahl z; char *komma = strchr(eingabe, ','); // Suche Komma if (komma) { *komma = '\0'; // Trenne Vorkommateil ab z.vorkomma = atoi(eingabe); // Umwandlung Vorkomma char *nachkommaStr = komma + 1; // Entferne evtl. Zeilenumbruch nachkommaStr[strcspn(nachkommaStr, "\n")] = '\0'; z.nachstellen = strlen(nachkommaStr); // Anzahl der Nachkommastellen merken z.nachkomma = atoi(nachkommaStr); // Nachkomma als ganze Zahl } else { // Falls kein Komma, dann ist es eine ganze Zahl z.vorkomma = atoi(eingabe); z.nachkomma = 0; z.nachstellen = 0; } zahlen[anzahl++] = z; // Speichern der Zahl } // Maximal vorkommende Anzahl von Nachkommastellen finden int max_nachstellen = 0; for (int i = 0; i < anzahl; i++) { if (zahlen[i].nachstellen > max_nachstellen) { max_nachstellen = zahlen[i].nachstellen; } } // Aufaddieren mit Skalierung int summe_vorkomma = 0; long long summe_nachkomma = 0; for (int i = 0; i < anzahl; i++) { summe_vorkomma += zahlen[i].vorkomma; // Nachkomma auf gemeinsame Basis (z. B. 1.000.000 für 6 Stellen) skalieren int faktor = 1; for (int j = 0; j < max_nachstellen - zahlen[i].nachstellen; j++) { zahlen[i].nachkomma *= 10; } summe_nachkomma += zahlen[i].nachkomma; } // Nachkommaübertrag berechnen int basis = 1; for (int i = 0; i < max_nachstellen; i++) basis *= 10; summe_vorkomma += summe_nachkomma / basis; summe_nachkomma = summe_nachkomma % basis; // Ausgabe printf("= %d,%0*lld\n", summe_vorkomma, max_nachstellen, summe_nachkomma); return 0; }