riesim jednu ulohu, uz mam cely algoritmus vymysleny, az na jednu cast - potrebujem pridat k datumu, resp. roku niekolko dni a vypisat dany datum.
Toto riesenie sice funguje, lenze pri takych stotisicoch uz chybuje cca o 3 dni a netusim preco. Nepouzivam time kniznicu, pretoze potrebujem pracovat s nizkymi rokmi. Zabil som s tym uz asi 4 hodiny, tak prosim pomozte
PS: Viem, ze sa to da spravit aj s lepsim casom, ale aj tak je ten runtime kratky a splni ucel.
//aha, tak zistil som, ze napr. rok 700 je priestupny...ale preco sakra?
Kód: Vybrať všetko
void add(int rok, long long int i_dni) {
int mesiace[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, mesiac = 0;
while (i_dni >= mesiace[mesiac]) {
i_dni -= mesiace[mesiac++];
if (mesiac > 11) {
mesiac = 0;
rok++;
if ((rok % 400 == 0) || (rok % 4 == 0 && rok % 100 != 0)) {
mesiace[1] = 29;
}
else {
mesiace[1] = 28;
};
};
};
printf("%lld %d %d", i_dni+1, mesiac+1, rok);
};