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); }

Rispondi quotando