halo
This commit is contained in:
parent
0d2d19d0db
commit
4d9f0b6e84
@ -2,17 +2,18 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#define MAX 100 // Maximale Anzahl an Zahlen
|
#define MAX 100 // Maximale Anzahl an Zahlen
|
||||||
|
|
||||||
// Struktur zur Speicherung einer Zahl mit Vorkomma- und Nachkommateil
|
// Struktur zur Speicherung einer Zahl mit Vorkomma- und Nachkommateil
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int vorkomma; // Ganzzahliger Teil vor dem Komma
|
int vorkomma; // Ganzzahliger Teil vor dem Komma
|
||||||
int nachkomma; // Nachkommateil als ganze Zahl
|
int nachkomma; // Nachkommateil als ganze Zahl
|
||||||
int nachstellen; // Anzahl der Nachkommastellen
|
int nachstellen; // Anzahl der Nachkommastellen
|
||||||
} Kommazahl;
|
} Kommazahl;
|
||||||
int main() {
|
|
||||||
Kommazahl zahlen[MAX]; // Array zur Speicherung aller eingegebenen Zahlen
|
// Funktion zur Einlesung der Zahlen
|
||||||
char eingabe[100]; // Eingabepuffer
|
int einlesen(Kommazahl zahlen[], int max) {
|
||||||
int anzahl = 0; // Zähler für Anzahl der eingegebenen Zahlen
|
char eingabe[100];
|
||||||
// Eingabephase
|
int anzahl = 0;
|
||||||
printf("Gib Deine Kommazahlen ein (Abschluss mit Leerzeile)\n");
|
printf("Gib Deine Kommazahlen ein (Abschluss mit Leerzeile)\n");
|
||||||
while (fgets(eingabe, sizeof(eingabe), stdin)) {
|
while (fgets(eingabe, sizeof(eingabe), stdin)) {
|
||||||
if (eingabe[0] == '\n') break; // Abbruch bei Leerzeile
|
if (eingabe[0] == '\n') break; // Abbruch bei Leerzeile
|
||||||
@ -33,26 +34,39 @@ int main() {
|
|||||||
z.nachstellen = 0;
|
z.nachstellen = 0;
|
||||||
}
|
}
|
||||||
zahlen[anzahl++] = z; // Speichern der Zahl
|
zahlen[anzahl++] = z; // Speichern der Zahl
|
||||||
|
if (anzahl >= max) break;
|
||||||
}
|
}
|
||||||
// Maximal vorkommende Anzahl von Nachkommastellen finden
|
return anzahl;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Funktion zur Bestimmung der maximalen Nachkommastellen
|
||||||
|
int max_nachkommastellen(const Kommazahl zahlen[], int anzahl) {
|
||||||
int max_nachstellen = 0;
|
int max_nachstellen = 0;
|
||||||
for (int i = 0; i < anzahl; i++) {
|
for (int i = 0; i < anzahl; i++) {
|
||||||
if (zahlen[i].nachstellen > max_nachstellen) {
|
if (zahlen[i].nachstellen > max_nachstellen) {
|
||||||
max_nachstellen = zahlen[i].nachstellen;
|
max_nachstellen = zahlen[i].nachstellen;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Aufaddieren mit Skalierung
|
return max_nachstellen;
|
||||||
int summe_vorkomma = 0;
|
}
|
||||||
long long summe_nachkomma = 0;
|
|
||||||
|
// Funktion zur Addition der Zahlen mit Skalierung
|
||||||
|
void addiere(const Kommazahl zahlen[], int anzahl, int max_nachstellen, int *summe_vorkomma, long long *summe_nachkomma) {
|
||||||
|
*summe_vorkomma = 0;
|
||||||
|
*summe_nachkomma = 0;
|
||||||
for (int i = 0; i < anzahl; i++) {
|
for (int i = 0; i < anzahl; i++) {
|
||||||
summe_vorkomma += zahlen[i].vorkomma;
|
*summe_vorkomma += zahlen[i].vorkomma;
|
||||||
// Nachkomma auf gemeinsame Basis (z. B. 1.000.000 für 6 Stellen) skalieren
|
// Nachkomma auf gemeinsame Basis (z. B. 1.000.000 für 6 Stellen) skalieren
|
||||||
int faktor = 1;
|
int nachkomma = zahlen[i].nachkomma;
|
||||||
for (int j = 0; j < max_nachstellen - zahlen[i].nachstellen; j++) {
|
for (int j = 0; j < max_nachstellen - zahlen[i].nachstellen; j++) {
|
||||||
zahlen[i].nachkomma *= 10;
|
nachkomma *= 10;
|
||||||
}
|
}
|
||||||
summe_nachkomma += zahlen[i].nachkomma;
|
*summe_nachkomma += nachkomma;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Funktion zur Berechnung des Übertrags und Ausgabe
|
||||||
|
void ausgabe(int summe_vorkomma, long long summe_nachkomma, int max_nachstellen) {
|
||||||
// Nachkommaübertrag berechnen
|
// Nachkommaübertrag berechnen
|
||||||
int basis = 1;
|
int basis = 1;
|
||||||
for (int i = 0; i < max_nachstellen; i++) basis *= 10;
|
for (int i = 0; i < max_nachstellen; i++) basis *= 10;
|
||||||
@ -60,5 +74,15 @@ int main() {
|
|||||||
summe_nachkomma = summe_nachkomma % basis;
|
summe_nachkomma = summe_nachkomma % basis;
|
||||||
// Ausgabe
|
// Ausgabe
|
||||||
printf("= %d,%0*lld\n", summe_vorkomma, max_nachstellen, summe_nachkomma);
|
printf("= %d,%0*lld\n", summe_vorkomma, max_nachstellen, summe_nachkomma);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
Kommazahl zahlen[MAX]; // Array zur Speicherung aller eingegebenen Zahlen
|
||||||
|
int anzahl = einlesen(zahlen, MAX); // Eingabephase
|
||||||
|
int max_nachstellen = max_nachkommastellen(zahlen, anzahl); // Maximal vorkommende Anzahl von Nachkommastellen finden
|
||||||
|
int summe_vorkomma;
|
||||||
|
long long summe_nachkomma;
|
||||||
|
addiere(zahlen, anzahl, max_nachstellen, &summe_vorkomma, &summe_nachkomma); // Aufaddieren mit Skalierung
|
||||||
|
ausgabe(summe_vorkomma, summe_nachkomma, max_nachstellen); // Ausgabe
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user