Compare commits
No commits in common. "ea24c9150108f1adce217816aa52d781d413164b" and "4ba80e5c45cde587a12915dfa168c0aec6903f8f" have entirely different histories.
ea24c91501
...
4ba80e5c45
38
25.6.3.c
38
25.6.3.c
@ -1,38 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
int finde_zahlwort(char *wort) {
|
|
||||||
if (strcasestr(wort, "eins")) return 1;
|
|
||||||
if (strcasestr(wort, "zwei")) return 2;
|
|
||||||
if (strcasestr(wort, "drei")) return 3;
|
|
||||||
if (strcasestr(wort, "vier")) return 4;
|
|
||||||
if (strcasestr(wort, "fünf")) return 5;
|
|
||||||
if (strcasestr(wort, "sechs")) return 6;
|
|
||||||
if (strcasestr(wort, "sieben")) return 7;
|
|
||||||
if (strcasestr(wort, "acht")) return 8;
|
|
||||||
if (strcasestr(wort, "neun")) return 9;
|
|
||||||
if (strcasestr(wort, "zehn")) return 10;
|
|
||||||
if (strcasestr(wort, "elf")) return 11;
|
|
||||||
if (strcasestr(wort, "zwölf")) return 12;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main() {
|
|
||||||
char *worte[] = {
|
|
||||||
"Endreim", "Kurzweil", "Nachtfalter", "Wohnviertel", "Neunauge",
|
|
||||||
"Weinstein", "Erdreich", "Achtung", "Segelflieger", "Pfalzwein",
|
|
||||||
"Radreifen", "Gehhelfer", "Leinsamen"
|
|
||||||
};
|
|
||||||
int summe = 0;
|
|
||||||
|
|
||||||
for (int i = 0; i < sizeof(worte)/sizeof(worte[0]); i++) {
|
|
||||||
int wert = finde_zahlwort(worte[i]);
|
|
||||||
if (wert > 0)
|
|
||||||
printf("%s: ... %d\n", worte[i], wert);
|
|
||||||
summe += wert;
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("------------------------------\n");
|
|
||||||
printf("Summe: %d\n", summe);
|
|
||||||
return 0;
|
|
||||||
}
|
|
56
27.2.c
56
27.2.c
@ -1,56 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h> //malloc und free
|
|
||||||
|
|
||||||
void ausgabe_liste(const char **listen) //Array von (listen) als Parameter
|
|
||||||
{
|
|
||||||
for (int i = 0; i < 10; i++) //Schleife geht von 0-9 - Gibt jedes Element des Arrays mit Position aus
|
|
||||||
{
|
|
||||||
printf("%d: %s\n", i, listen[i]); //Gibt die Nummer und die dazugehörige Liste aus, springt in die nächste Zeile
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void strichliste_erstellen(char **listen, int *zaehler) //Ein Array von Zeichenketten (listen) und eins von Zählern (zaehler)
|
|
||||||
{
|
|
||||||
char eingabe; //speichert die eingegebene Zahl
|
|
||||||
int index = 0; //Welcher Zähler aktualisiert werden soll
|
|
||||||
int laenge = 0; //Die Länge des neuen Strich-Strings
|
|
||||||
char *neuerSpeicher; //Platzhalter für den neuen Speicher
|
|
||||||
|
|
||||||
printf("Gib Zahlen ein von 0-9: \n");
|
|
||||||
|
|
||||||
while ((eingabe = getchar()) != EOF && eingabe != '\n') //getchar liest Zeichen vom Benutzer bis entweder EndOfFile oder \n erkannt wird
|
|
||||||
{
|
|
||||||
if (eingabe >= '0' && eingabe <= '9') //Prüft ob dieEingabe eine Ziffer ist zwischen 0 und 9
|
|
||||||
{
|
|
||||||
index = eingabe - '0'; //Wandelt das entsprechende Zeichen in die Zahl um
|
|
||||||
zaehler[index]++; //Erhöht den Zähler für die eingegebene Zahl '0' --> 0
|
|
||||||
laenge = zaehler[index] + 1; //Anzahl der Striche +1 für das 0-Zeichen, dass das Ende markiert
|
|
||||||
|
|
||||||
neuerSpeicher = (char *)malloc(laenge); //Reserviert Speicher für den neuen Text: char* wandelt den Rückgabewert von malloc in einen Zeichenzeiger um
|
|
||||||
snprintf(neuerSpeicher, laenge, "%s|", listen[index]); //snprintf erstellt den neuen Text: %s| fügt den alten Text und einen neuen Strich zusammen
|
|
||||||
free(listen[index]); //gibt den alten Speicher frei, damit nichts belegt bleibt
|
|
||||||
listen[index] = neuerSpeicher; //Speichert neuen Text in der Liste
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
int zaehler[10]; //Array für die Zähler (jede Zahl von 0 bis 9)
|
|
||||||
char **strichlisten = (char **)malloc(10 * sizeof(char *)); //Array von Zeichenketten für Strichlisten: Reserviert Platz für 10 Zeichenketten (eine für jede Zahl)
|
|
||||||
|
|
||||||
for (int i = 0; i < 10; i++) //durchläuft 10 mal, da 10 Zähler und Strichlisten jeweils gebraucht werden
|
|
||||||
{
|
|
||||||
strichlisten[i] = (char *)malloc(1); //malloc reserviert 1 Byte für jeden Eintrag in der Strichliste, char* wandelt den Rückgabewert von malloc in einen Zeiger auf Zeichen (char *) um
|
|
||||||
strichlisten[i][0] = '\0'; //greift auf das erste (und einzige) Zeichen der gerade reservierten Zeichenkette zu, Nullzeichen: Zeichenkette leer, aber gültig
|
|
||||||
zaehler[i] = 0; //setzt Zähler auf 0, damit man weiss dass für diese Zahl noch keine Striche hinzugefügt wurden
|
|
||||||
}
|
|
||||||
|
|
||||||
strichliste_erstellen(strichlisten, zaehler);
|
|
||||||
ausgabe_liste((const char **)strichlisten); //ruft die Funktionen auf, um die Listen zu erstellen und anzuzeigen
|
|
||||||
|
|
||||||
free(strichlisten); //gibt den Hauptspeicher der Listen frei
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user