Compare commits
4
Commits
437d5a9b2e
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5572368006 | ||
|
|
8705b7b629 | ||
|
|
3168349326 | ||
|
|
da74a8a87e |
No files matched your search
+115
@@ -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
@@ -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.
|
||||
//
|
||||
Reference in new issue
Block a user