|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Apr 2004
Messaggi: 364
|
Trasformazione data
Salve ragazzi, ho un problema, da un input che mi specifica il giorno
dell'anno espresso in numero, voglio in output la data espressa in lettere. Faccio un esempio per farmi capire meglio, se il numero inserito è 34, l'output deve essere 3 febbraio, ovviamente l'input dovrà essere compreso tra 1 e 365, senza considerare l'anno bisestile. Ho fatto questo programma, che però controlla tutti i casi, c'è forse un modo migliore per velocizzare il calcolo? Grazie a chi vorrà aiutarmi, ecco qui il codice int main() { int n; int data; cout<<"Inserire giorno dell'anno espresso in numero"<<endl; cin>>n; if (n<=31) cout<<"Gennaio " << n <<endl; if ((n>31) and (n<=59)) { data=n-31; cout<<"Febbraio "<< data <<endl; } if ((n>59) and (n<=90)) { data=n-59; cout<<"Marzo "<< data <<endl; } if ((n>90) and (n<=120)) { data=n-90; cout<<"Aprile "<< data <<endl; } if ((n>120) and (n<=151)) { data=n-120; cout<<"Maggio "<< data <<endl; } if ((n>151) and (n<=181)) { data=n-151; cout<<"Giugno "<< data <<endl; } if ((n>181) and (n<=212)) { data=n-181; cout<<"Luglio "<< data <<endl; } if ((n>212) and (n<=243)) { data=n-212; cout<<"Agosto "<< data <<endl; } if ((n>243) and (n<=273)) { data=n-243; cout<<"Settembre "<< data <<endl; } if ((n>273) and (n<=304)) { data=n-273; cout<<"Ottobre "<< data <<endl; } if ((n>304) and (n<=334)) { data=n-304; cout<<"Novembre "<< data <<endl; } if ((n>334) and (n<=365)) { data=n-334; cout<<"Dicembre "<< data <<endl; } return 0; |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Puoi usare le funzioni di time.h; ad esempio:
Codice:
#include <stdlib.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include <time.h> int main(int argc, char **argv) { struct tm t; time_t _t; if(argc!=2) { printf("Formato: %s <giorni>\n", argv[0]); return -1; } memset(&t, 0, sizeof(t)); t.tm_year = 105; // 1900+105=2005 t.tm_mday = atoi(argv[1]); _t = mktime(&t); t = *localtime(&_t); printf("%d giorni dall'inizio dell'anno: %s\n", atoi(argv[1]), asctime(&t)); return 0; }
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:59.