halo
This commit is contained in:
parent
28ff2d1464
commit
0d2d19d0db
64
28.2_kommaadd.c
Normal file
64
28.2_kommaadd.c
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#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;
|
||||||
|
}
|
37
29.1_laugsaeu.c
Normal file
37
29.1_laugsaeu.c
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
// Definition von Aufzählungstypen (enum) für Laugen und Säuren
|
||||||
|
typedef enum { NATRIUMLAUGE, KALILAUGE, KALKWASSER, ANZ_LAUGEN } Lauge;
|
||||||
|
typedef enum { SALZSAEURE, SCHWEFELSAEURE, SALPETERSAEURE, KOHLENSAEURE, ANZ_SAEUREN } Saeure;
|
||||||
|
// Tabelle der Namen (für Anzeige)
|
||||||
|
const char* laugen_namen[ANZ_LAUGEN] = {
|
||||||
|
"Natronlauge", "Kalilauge", "Kalkwasser"
|
||||||
|
};
|
||||||
|
const char* saeure_namen[ANZ_SAEUREN] = {
|
||||||
|
"Salzsäure", "Schwefelsäure", "Salpetersäure", "Kohlensäure"
|
||||||
|
};
|
||||||
|
// Produktmatrix: Salze für Kombinationen von Lauge x Säure
|
||||||
|
const char* produkte[ANZ_LAUGEN][ANZ_SAEUREN] = {
|
||||||
|
// Natronlauge
|
||||||
|
{ "Natriumchlorid", "Natriumsulfat", "Natriumnitrat", "Natriumcarbonat" },
|
||||||
|
// Kalilauge
|
||||||
|
{ "Kaliumchlorid", "Kaliumsulfat", "Kaliumnitrat", "Kaliumcarbonat" },
|
||||||
|
// Kalkwasser
|
||||||
|
{ "Calciumchlorid", "Calciumsulfat", "Calciumnitrat", "Calciumcarbonat" }
|
||||||
|
};
|
||||||
|
int main() {
|
||||||
|
// Überschrift ausgeben
|
||||||
|
printf(" |");
|
||||||
|
for (int s = 0; s < ANZ_SAEUREN; s++) {
|
||||||
|
printf(" %-16s |", saeure_namen[s]); // Spaltenköpfe für Säuren
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
// Tabelle ausgeben
|
||||||
|
for (int l = 0; l < ANZ_LAUGEN; l++) {
|
||||||
|
printf("%-14s |", laugen_namen[l]); // Zeilenköpfe für Laugen
|
||||||
|
for (int s = 0; s < ANZ_SAEUREN; s++) {
|
||||||
|
printf(" %-16s |", produkte[l][s]); // Reaktionsprodukte
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user