28.5
This commit is contained in:
parent
e1aa8c7046
commit
b823c0674f
68
datediff.c
Normal file
68
datediff.c
Normal file
@ -0,0 +1,68 @@
|
||||
#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));
|
||||
}
|
BIN
datediff.exe
Normal file
BIN
datediff.exe
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user