Saffina ha scritto:
Grazie mille!!!! Anzi Grazie infinite per aver risposto di domenica
Sapresti suggerirmi come allenarmi per stringhe,puntatori e inserimento file( C++)?
/*Inserita una data, verifica se essa è valida*/
#include <iostream>
using namespace std;
int valid(int mese, int giorno);
int main()
{
int mese, giorno, anno, errore;
cout<<"Inserire il mese : ";
cin>>mese;
cout<<"Inserire il giorno : ";
cin>>giorno;
cout<<"Inserire anno :";
cin>>anno;
errore=valid(mese,giorno);
if (errore==0)
{
cout<<"La data e' valida!";
}
else
{
cout<<"Hai inserito una data non valida!";
switch (errore)
{
case 1 : errore==1;
cout<<"Errore! Reinserisci il giorno :";
break;
case 2: errore==2;
cout<<"Errore! Reinserisci il giorno :";
break;
case 3: errore==3;
cout<<"Errore! Reinserisci il giorno :";
break;
}
}
return 0;
}
int valid(int mese, int giorno)
{
if(mese==2)
{
if(giorno>28 || giorno<0)
{
return 1; ;
}
}
if(mese==4 || mese==6 || mese==9 || mese==11)
{
if(giorno>30 || giorno<0)
{
return 2;
}
}
if(mese==31)
{
if(giorno>31 ||giorno<0)
{
return 3;
}
}
else
return 0;
}
Questo codice presenta ancora n po' di pasticci:
1) perche' non si valida anche l'anno?
2) febbraio puo' anche avere 29 giorni! Esistono anche gli anni bisestili. Quando e' che un anno e' bisestile? C'e' la formuletta .
3) a che servono gli statement 'errore==1', ..? Sono dei 'predicati'. Ritornano un vaolre booleano, valore di cui non viene fatto nulla. Quindi perche' sono stati messi li?
4) il mese 31? A meno che non sia cambiato il calendario, un anno ha 12 mesi, almeno nella maggior parte dei calendari del mondo. Ci sarebbero i Maia che hanno calendari con 5 periodi, ed in particolare 20 mesi, ma questo e' un altro discorso .
5) oltre a febbrario ed ai mesi di 30 giorni, si devono controllare anche i mesi di 31 giorni
Dai, un piccolo sforzo ed e' fatta!