69 lines
1.3 KiB
C
69 lines
1.3 KiB
C
#include <stdio.h>
|
|
|
|
typedef struct{
|
|
unsigned tag;
|
|
unsigned monat;
|
|
unsigned jahr;
|
|
}Daten1;
|
|
|
|
typedef struct{
|
|
unsigned tag;
|
|
unsigned monat;
|
|
unsigned jahr;
|
|
}Daten2;
|
|
|
|
int monat_tage[2][13] = {
|
|
{0, 31, 28, 31, 30, 31, 30, 31, 31,30,31,30,31},
|
|
{0, 31, 29, 31, 30, 31, 30, 31, 31, 30,31,30,31}};
|
|
|
|
|
|
int schaltjahr(int jahr)
|
|
{
|
|
if((jahr % 4 == 0 && jahr % 100 != 0) || (jahr % 400 == 0)){
|
|
return 1;
|
|
}
|
|
else{
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
int tage_diff(Daten1 eins,Daten2 zwei){
|
|
|
|
int jahr = 0,monat = 0,tage = 0;
|
|
int schalt = schaltjahr(eins.jahr);
|
|
|
|
tage = zwei.tag - eins.tag;
|
|
|
|
for (int i = eins.monat; i <= zwei.monat - 1 ; ++i) {
|
|
monat += monat_tage[schalt][i];
|
|
}
|
|
|
|
for (int i = eins.jahr+ 1 ; i <= zwei.jahr ; ++i) {
|
|
if(schaltjahr(i) == 1){
|
|
jahr += 366;
|
|
}
|
|
else{
|
|
jahr += 365;
|
|
}
|
|
}
|
|
|
|
return tage+monat+jahr;
|
|
}
|
|
|
|
int main(){
|
|
unsigned tag, monat, jahr;
|
|
|
|
printf("1. Datum (tt.mm.jjjj):");
|
|
scanf("%d.%d.%d", &tag, &monat, &jahr);
|
|
|
|
Daten1 temp1 = {tag, monat, jahr};
|
|
|
|
printf("2. Datum (tt.mm.jjjj):");
|
|
scanf("%d.%d.%d", &tag, &monat, &jahr);
|
|
|
|
|
|
Daten2 temp2 = {tag, monat, jahr};
|
|
|
|
printf("..... Differenz: %d Tage .....",tage_diff(temp1, temp2));
|
|
}
|