diff --git a/wochentag.c b/wochentag.c new file mode 100644 index 0000000..e4abc3d --- /dev/null +++ b/wochentag.c @@ -0,0 +1,49 @@ +#include + +int main() { + + // Variablen definieren + int jh_koeff[4] = {4,2,0,5}; + int monat_koeff[12] = {2,5,5,2,3,6,1,4,0,2,5,0}; + int tag = 0; + int monat = 0; + int jahr = 0; + int schaltjahr = 0; + + printf("Geben Sie ein Datum ein tag, monat, jahr: \n"); //eingabe + scanf("%d.%d.%d.", &tag, &monat,&jahr); + + int jh = jahr / 100; // die vorderen beiden Ziffern der Jahreszahl + int ja = jahr % 100; // die hinteren beiden Ziffern der Jahreszahl + + // geschaut ob es ein schaltjahr ist + if(monat > 2){ + schaltjahr = 0; + } + else { + if (jahr % 400 == 0) { + schaltjahr = 1; + } + else{ + if(jahr % 100 == 0){ + schaltjahr = 0; + } + else{ + if(jahr % 4 == 0){ + schaltjahr = 1; + } + else{ + schaltjahr = 0; + } + } + } + } + + int wochentag = (tag + monat_koeff[monat -1] - schaltjahr + jh_koeff[jh%4] + ja + ja/4) % 7; // formel um den wochentag auszurechnen + + const char *tage[] = {"Sonntag", "Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"}; + + printf("Der %d.%d.%d war ein %s.\n",tag, monat, jahr ,tage[wochentag]); // ausgabe vom Wochentag + + return 0; +} \ No newline at end of file diff --git a/wortlen.c b/wortlen.c index 905dbef..5838078 100644 --- a/wortlen.c +++ b/wortlen.c @@ -2,37 +2,53 @@ #include #define MAX_WORDLENGTH 100 +#define MAX_TEXT_LENGTH 1000 int main() { + char dateiname[256]; // Puffer für den Dateinamen + + printf("Bitte gib den Dateinamen ein (z.B. text.txt oder Pfad): "); + scanf("%255s", dateiname); // Dateinamen von Tastatur einlesen und Begrenzung auf 255 Zeichen schützt vor Pufferüberläufen + + FILE *file = fopen(dateiname, "r"); // Datei öffnen + if (file == NULL) { + perror("Fehler beim oeffnen der Datei"); // Überprüfen ob die Eingabe stimmt + return 1; + } + int frequency[MAX_WORDLENGTH] = {0}; - char text[1000]; + char text[MAX_TEXT_LENGTH]; int wordlength = 0; - printf("Bitte geben Sie einen Text ein:\n"); - fgets(text, sizeof(text), stdin); - for (int i = 0; text[i] != '\0'; i++) { // schleife liest - if (isalnum(text[i])) { //isalnum ueberprueft ob das es ein wort oder zahl ist also kein leerzeichen, satzzeichen - wordlength++; // zaehlt die buchstaben in dem wort - } else { - if (wordlength > 0) { // wenn das groeßer wird das als wordlength zb 3 buchstaben - frequency[wordlength]++; // dann wird der counter fuer 3 hochgezaelt - wordlength = 0; // um das naechste wort zu zaehlen + while (fgets(text, sizeof(text), file) != NULL) { // Datei zeilenweis lesen + for (int i = 0; text[i] != '\0'; i++) { + if (isalnum(text[i])) { //isalnum ueberprüft ob das es ein wort oder zahl ist also kein leerzeichen, satzzeichen + wordlength++; // zaehlt die buchstaben in dem wort + } else { + if (wordlength > 0 && wordlength < MAX_WORDLENGTH) { //überprüft pb ein wort gezählt werden kann (überschreitet micht max Wortlänge) + frequency[wordlength]++; //Erhöht die Häufigkeit für die aktuelle Wortlänge + wordlength = 0; //Setzt den Zähler für die Wortlänge zurück für das nächste Wort + } } } + + // Letztes Wort in der Zeile nicht vergessen + if (wordlength > 0 && wordlength < MAX_WORDLENGTH) { + frequency[wordlength]++; + wordlength = 0; + } } + fclose(file); // Datei schließen - if (wordlength > 0) { - frequency[wordlength]++; // das ist fuer das letzt wort damit es gezaehlt wird - } - - printf("Haeufigkeitsverteilung der Wortlaengen:\n"); - for (int i = 1; i < MAX_WORDLENGTH; i++) { // geht von 1-100 und schaut welche wortlaengen vorhanden sind + // Ergebnis ausgeben + printf("\nHaeufigkeitsverteilung der Wortlaengen:\n"); + for (int i = 1; i < MAX_WORDLENGTH; i++) { //geht alle wortlängen durch if (frequency[i] > 0) { - printf("Wortlaenge %d: %d\n", i, frequency[i]); // printet die anzahl + printf("Wortlaenge %d: %d\n", i, frequency[i]); // überprüft die häufigkeit } } return 0; -} \ No newline at end of file +} diff --git a/wortlen.exe b/wortlen.exe index 9549b88..253daa5 100644 Binary files a/wortlen.exe and b/wortlen.exe differ