Compare commits

...
4 Commits
Author SHA1 Message Date
pecherle95173 5572368006 Test2 2025-05-23 12:49:06 +02:00
pecherle95173 8705b7b629 Merge remote-tracking branch 'origin/main' 2025-05-16 11:33:54 +02:00
pecherle95173 3168349326 Test2 2025-05-16 11:33:32 +02:00
pecherle95173 da74a8a87e Test2 2025-05-16 11:31:50 +02:00
2 changed files with 256 additions and 0 deletions

No files matched your search

+115
View File
@@ -0,0 +1,115 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define SIZE_EINGABE 11
typedef struct {
int tag;
int monat;
int jahr;
} Datum;
int datum_einlesen(Datum *datum, int i) {
char eingabe[SIZE_EINGABE] = {0};
printf("%d. Datum (tt.mm.jjjj): ", i);
if (fgets(eingabe, SIZE_EINGABE, stdin) != NULL) {
int laenge = strlen(eingabe);
if (eingabe[laenge - 1] == '\n') {
eingabe[laenge - 1] = '\0';
}
if (sscanf(eingabe, "%d.%d.%d", &datum->tag, &datum->monat, &datum->jahr) == 3) {
return 1;
}
}
return 0;
}
int schaltjahr_berechnen(int jahr) {
return (jahr % 4 == 0 && (jahr % 100 != 0 || jahr % 400 == 0)) ? 1 : 0;
}
int alle_tage_bis_datum_berechnen(Datum *datum) {
int aktuelles_datum_tage = 0;
const int monate_kein_schaltjahr[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
const int monate_schaltjahr[12] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
for(int i = 0; i < datum->jahr; i++){
int schaltjahr = schaltjahr_berechnen(i);
if(schaltjahr == 1) {
aktuelles_datum_tage += 366;
}
else if(schaltjahr == 0) {
aktuelles_datum_tage += 365;
}
}
for(int j = 0; j < (datum->monat) - 1 ; j++) {
int schaltjahr = schaltjahr_berechnen(datum->jahr);
if(schaltjahr == 1) {
aktuelles_datum_tage += monate_schaltjahr[j];
}
else if(schaltjahr == 0) {
aktuelles_datum_tage += monate_kein_schaltjahr[j];
}
}
for(int k = 0; k < datum->tag; k++) {
aktuelles_datum_tage++;
}
return aktuelles_datum_tage;
}
int tage_diff(Datum *datum_1, Datum *datum_2) {
int tage_diff_gesamt = 0;
int tage_datum_1 = alle_tage_bis_datum_berechnen(datum_1);
int tage_datum_2 = alle_tage_bis_datum_berechnen(datum_2);
tage_diff_gesamt = abs(tage_datum_1 - tage_datum_2);
return tage_diff_gesamt;
}
int main() {
Datum datum_1, datum_2;
if (!datum_einlesen(&datum_1, 1)) {
printf("Fehler beim Einlesen von Datum 1.\n");
}
fflush(stdin);
if (!datum_einlesen(&datum_2, 2)) {
printf("Fehler beim Einlesen von Datum 2.\n");
}
int tage_diff_aus = tage_diff(&datum_1, &datum_2); {
}
printf("..... Differenz: %d Tage .....", tage_diff_aus);
return 0;
}
//
// Created by Lennart Pecher on 16.05.25.
//
//
// Created by Lennart Pecher on 16.05.25.
//
+141
View File
@@ -0,0 +1,141 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE_NAME 100
typedef struct knotenNamensliste {
char name[SIZE_NAME];
struct knotenNamensliste* next;
struct knotenNamensliste* prev;
} knotenNamensliste_t;
knotenNamensliste_t* neuenKnotenErstellen(char *aktuellerName) {
knotenNamensliste_t *neuerKnoten = (knotenNamensliste_t*)malloc(sizeof(knotenNamensliste_t));
if (neuerKnoten == NULL) {
printf("Speicher konnte nicht zugewiesen werden!\n");
return NULL;
}
strncpy(neuerKnoten->name, aktuellerName, SIZE_NAME - 1);
neuerKnoten->prev = NULL;
neuerKnoten->next = NULL;
return neuerKnoten;
}
int namenEinlesen(char *aktuellerName) {
printf("Name (Leere Eingabe zum Beenden):\t");
if (fgets(aktuellerName, SIZE_NAME, stdin) != NULL) {
int laenge = strlen(aktuellerName);
if (aktuellerName[laenge-1] == '\n') {
aktuellerName[laenge-1] = '\0';
}
if (strlen(aktuellerName) == 0) {
return 0;
}
return 1;
}
return 0;
}
int wahlListe() {
int wahl;
printf("Welche Liste (1 oder 2):\t");
scanf("%d", &wahl);
while (getchar() != '\n');
return wahl;
}
void listeSortieren(knotenNamensliste_t **listeHead, char *aktuellerName) {
knotenNamensliste_t *neuerKnoten = neuenKnotenErstellen(aktuellerName);
knotenNamensliste_t *temp = *listeHead;
//Überprüfung ob Name bereits vorhanden
while (temp != NULL) {
if (strcmp(temp->name, aktuellerName) == 0) {
free(neuerKnoten);
return;
}
temp = temp->next;
}
if (*listeHead == NULL) {
*listeHead = neuerKnoten;
} else {
temp = *listeHead;
//Alphabetische Sortierung
while (temp->next != NULL && strcmp(temp->name, aktuellerName) < 0) {
temp = temp->next;
}
if (strcmp(temp->name, aktuellerName) > 0) {
neuerKnoten->next = temp;
neuerKnoten->prev = temp->prev;
if (temp->prev != NULL) {
temp->prev->next = neuerKnoten;
} else {
*listeHead = neuerKnoten;
}
temp->prev = neuerKnoten;
} else {
temp->next = neuerKnoten;
neuerKnoten->prev = temp;
}
}
}
void ausgabeListe(knotenNamensliste_t *listeHead) {
knotenNamensliste_t *temp = listeHead;
while (temp != NULL) {
printf("Name: %s\n", temp->name);
temp = temp->next;
}
}
int main() {
knotenNamensliste_t *listeGemischtHead = NULL;
knotenNamensliste_t *listeEinsHead = NULL;
knotenNamensliste_t *listeZweiHead = NULL;
char aktuellerName[SIZE_NAME];
while (namenEinlesen(aktuellerName) == 1) {
int listeZuweisen = wahlListe();
if (listeZuweisen == 1) {
listeSortieren(&listeEinsHead, aktuellerName);
} else if (listeZuweisen == 2) {
listeSortieren(&listeZweiHead, aktuellerName);
}
listeSortieren(&listeGemischtHead, aktuellerName);
}
printf("Liste 1:\n");
ausgabeListe(listeEinsHead);
printf("Liste 2:\n");
ausgabeListe(listeZweiHead);
printf("Liste gemischt:\n");
ausgabeListe(listeGemischtHead);
return 0;
}
//
// Created by Lennart Pecher on 23.05.25.
//
//
// Created by Lennart Pecher on 23.05.25.
//