Info2/29.1.c
2025-05-21 11:53:14 +02:00

73 lines
1.8 KiB
C

#include <stdio.h>
#include <string.h>
// Aufzählung der Säuren
typedef enum
{
Salzsaure,
Schwefelsaure,
Salpetersaure,
Kohlensaure
} Saeure;
// Aufzählung der Laugen
typedef enum
{
Natronlauge,
Kalilauge,
Kalkwasser
} Lauge;
// Namen der Säuren für die Ausgabe
char *Saeuren[] = {"Salzsäure", "Schwefelsäure", "Salpetersäure", "Kohlensäure"};
// Namen der Laugen für die Ausgabe
char *Laugen[] = {"Natronlauge", "Kalilauge", "Kalkwasser"};
// Ergebnisse der Reaktionen (Laugen x Säuren = 3 x 4 = 12 Einträge)
char *Ausgabe[] = {
" Natriumchlorid", " Natriumsulfat", " Natriumnitrat", " Natriumcarbonat",
" Kaliumchlorid", " Kaliumsulfat", " Kaliumnitrat", " Kaliumcarbonat",
" Calciumchlorid", " Calciumsulfat", " Calciumnitrat", " Calciumcarbonat"
};
int main()
{
Saeure b;
Lauge a;
// Tabellenkopf: Säuren als Spaltenüberschriften
printf("\t \t");
printf("|| ");
for (b = Salzsaure; b < Kohlensaure; b++)
{
printf(" %s", Saeuren[b]); // Säurename ausgeben
printf("\t");
printf("|");
}
printf(" %s |", Saeuren[3]); // Letzte Säure extra ausgeben (weil Schleife nur bis <)
printf("\n");
// Trennlinie unter dem Kopf
printf("---------------------------------------------------------------------------------|");
// Für jede Lauge (Zeilen)
for (a = Natronlauge; a <= Kalkwasser; ++a)
{
printf("\n");
printf("%s\t||", Laugen[a]); // Laugenname links am Rand
// Für jede Säure (Spalten)
for (b = Salzsaure; b <= Kohlensaure; ++b)
{
// Index berechnen: (Lauge * 4) + Säure
// 4 Säuren pro Lauge = 4 Spalten pro Zeile
printf(Ausgabe[b + a * 4]); // Reaktionsprodukt ausgeben
printf("| ");
}
printf("\n");
}
return 0;
}