Volevo fare un programma che mi trovasse i giorni passati dall'anno 0 fino ad oggi.
Tenendo conto anche degli anni bisestili.
Gli anni bisestili sono quelli divisibili per 4 ad eccezione di quelli che terminano con 00 (es. 1200, 1400 ecc...) che sono bisestili solamente se, prendendo le prime due cifre, esse sono divisibili per 4 (es. 1200 --> 12%4 = 0 --> è bisestile; 1400 --> 14%4 != 0 --> non è bisestile).
Ho scritto questo codice, secondo voi è giusto?
codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
int main (void){
int Giorno, Mese, Anno;
//Ricavo data dal sistema
time_t rawtime;
time (&rawtime);
struct tm* leggibile;
leggibile = localtime(&rawtime);
Giorno = leggibile->tm_mday;
Mese = leggibile->tm_mon;
Anno = leggibile->tm_year + 1900;
int NumeroAnno[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int Giorni1, x, GiorniMesi1;
for(x = 0; x < Mese; x++)
GiorniMesi1 += NumeroAnno[x];
Giorni1 = (Anno-1)*365+GiorniMesi1+Giorno;
int y;
if(Mese > 2){
for(y = 0; y <= Anno; y++){
if(y % 100 == 0){
if(y / 100 % 4 == 0)
Giorni1 += 1;
};
if(y % 100 %4 == 0)
Giorni1 += 1;
};
};
if(Mese <= 2){
for(y = 0; y < Anno; y++){
if(y % 100 == 0){
if(y / 100 % 4 == 0)
Giorni1 += 1;
};
if(y % 100 %4 == 0)
Giorni1 += 1;
};
};
printf("Dall'anno 0 ad oggi sono passati %d giorni\n", Giorni1);
}