Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - domanda su un'implementazione ....
Forum - C/C++ - domanda su un'implementazione ....

Avatar
Birkhoff92 (Normal User)
Rookie


Messaggi: 31
Iscritto: 27/03/2014

Segnala al moderatore
Postato alle 18:31
Venerdì, 14/10/2016
Salve, sto eseguendo un programmino che ho preso sul Deitel&Deitel , e ho un dubbio : qui , perchè definisce quei giorni come un array di 13 con tutti tra 30 e 31 ? non dovrebbero essere 12 ??
Codice sorgente - presumibilmente C++

  1. int Date:: checkDay(int testDay) const {
  2.     static const int daysPerMonth[13]=
  3.     {0,31,28,31,30,31,30,31,31,30,31,30,31};
  4.     if (testDay >0 && testDay <= daysPerMonth[month])
  5.         return testDay;
  6.     if(month ==2 && testDay==29 &&(year %400==0 || (year%4==0 && year&100==0)))
  7.         return testDay;
  8.     cout<<"Invalid day ("<<testDay<<")set to 1.\n";
  9.     return 1;
  10. } //fine funzione checkDay



la funzione checkDay è definita qui invece :
Codice sorgente - presumibilmente C++

  1. #ifndef Date_h
  2. #define Date_h
  3. class Date {
  4. public:
  5.     Date(int = 1, int=1,int=1900);
  6.     void print()const;
  7.     ~Date();
  8. private:
  9.     int month;
  10.     int day;
  11.     int year;
  12.     int checkDay(int) const; // funzione d'utilità per convalidare mese e anno
  13. };
  14.  
  15. #endif /* Date_h */

. Grazie per i chiarimenti :)


Autodidatta: c++,sql,swift2.2,python,java(poco)
Hobby: Costruire droni programmando arduino,giocare a basket. Praticante di Sanda Boxe
OS: linux ,MacOs(Sierra), windows(10)
Linux: ubuntu12.04lts,arch,slack,pearos,zorinos,debian e mint 14.
PM Quote
Avatar
lumo (Member)
Expert


Messaggi: 411
Iscritto: 18/04/2010

Segnala al moderatore
Postato alle 0:25
Sabato, 15/10/2016
È solo per convenienza: così al numero di giorni del primo mese (numero 1) si fa daysPerMonth[1]. Se non ci fosse stato lo 0 iniziale e daysPerMonth fosse di 12 elementi, avresti dovuti fare daysPerMonth[0].
Nel codice sarebbe stato daysPerMonth[month-1].

PM Quote
Avatar
Template (Member)
Pro


Messaggi: 175
Iscritto: 09/12/2015

Segnala al moderatore
Postato alle 10:56
Sabato, 15/10/2016
Una delle tantissime idiozie del Deitel: invece di insegnarti a scrivere del codice sensato ("month-1" al posto di "month" non pregiudica la leggibilità di un buon codice, soprattutto se ben commentato) ti insegna ad aggiungere roba inutile...

Ultima modifica effettuata da Template il 15/10/2016 alle 15:55


"Nel curriculum scrivete quello che sapete fare... e anche quello che non sapete fare! Tipo: "Già vescovo di Cracovia, partecipai alla Coppa America, vincendola!""
[...]
"Sto giocando al piccolo Dio e mi sta venendo pure alla grande."
PM Quote