Originariamente inviato da oregon
Bisogna vedere il codice che usi per ottenere la att.dataes
Questa rileva la data di oggi:
codice:
string RilevData(void){ //Acqiusisce la data di oggi
int g,m,a;
ostringstream app;
string apg,s;
time_t t=time(NULL);
tm *time;
time=localtime(&t);
s=""; //Stringa vuota
g=time->tm_mday; //giorno
m=(time->tm_mon)+1; //mese
a=(time->tm_year)+1900; //anno
app<<g; //Conversione del giorno da numero a stringa
apg=app.str();
s=s+apg+"/"; //Aggiornamento data
app<<m; //Conversione del mese da numero a stringa
apg=app.str();
apg=apg.erase(0,2);
if(m<10)
apg=apg.insert(0,"0");
s=s+apg+"/";
app<<a; //Conversione dell'anno da numero a stringa
apg=app.str();
apg=apg.erase(0,3);
s=s+apg;
return s;
}
Questa è la richiesta di data e attività all'utente:
codice:
attivita InsDati(void){
attivita att;
string s,apg,es;
bool ok,cd;
char rd,ardata[10];
int i;
s=RilevData(); //La stringa s contiene la data di oggi
strcpy(att.dataes,s.c_str()); //Copia il contenuto della stringa s nell'array di caratteri dataes della struttura attivita
cout<<"L'attivita' e' stata eseguita in data odierna, "<<att.dataes<<" (s/n)? ";
ok=0;
do{ //Ripeti il ciclo finchè...
cin>>rd;
rd=tolower(rd); //Fai diventare la lettera minuscola
if((rd!='s')&&(rd!='n')){ //Risposta sbagliata
cout<<endl<<"Risposta non corretta. Reinseriscila: ";
ok=1;
}
else{ //Risposta giusta
if(rd=='s') //Si
cout<<endl<<"Ok."<<endl;
if(rd=='n'){ //No
s=""; //Cancellazione data
do{ //Ripeti il ciclo finchè...
cout<<"Inserisci la data di esecuzione (nel formato gg/mm/aaaa): ";
for(i=0;i<10;i++)
cin>>ardata[i];
cd=ContrData(ardata); //Procedura controllo esattezza data
if(cd==1) //Se la data è sbagliata...
cout<<"DATA ERRATA!!"<<endl;
fflush(stdin); //Pulizia input
}while(cd==1); //...la data non è giusta
strcpy(att.dataes,ardata); //Copia il contenuto dell'array di caratteri ardata nell'array di caratteri dataes della struttura attivita
}
}
}while(ok==1); //...la data non è giusta
fflush(stdin);
cout<<"Inserisci l'attivita' eseguita: "<<endl;
getline(cin, es);
strcpy(att.attes,es.c_str()); //Copia il contenuto della stringa es nell'array di caratteri es della struttura attivita
return att;
}