ayuda practica en c

rafita
01 de Noviembre del 2005
buenas, me han mandado una practica para hacer y no acabo de terminarla, no se que hacer...

el programa consiste en pedir un dia, un mes y un año, diciendo al final si la fecha introducida es correcta (osea, por ejemplo, si el tio mete de dia -1 pues al final sera incorrecta). y tambien hay que tener en cuenta el dia del mes (por ejemplo si se mete como mes febrero no se puede meter el dia 31)

y despues de todo esto hay que preguntar si quiere introducir otra fecha. obviamente el programa se tiene que repetir hasta que la fecha introducida sea correcta

os pongo lo que tengo hecho:

#include &ltiostream>
using namespace std;

main()
{

int mes;
int anyo;
int dia;
int correcto=1;

cout <<"introduce un anyo: ";
cin >&gtanyo;

if (anyo&lt1)
cout <<"error...";
else
cout <&ltanyo;

cout <<"introduce un mes: ";
cin >&gtmes;
if ((mes&lt1) or (mes&gt12))
cout <<"error...";
else
cout<&ltmes;



cout << "introduce un dia: ";
cin >> dia;
if ((dia&gt0) and (dia&lt32))
{

if ((mes=4) or (mes=6) or (mes=9) or (mes=11))
{
if ((dia&lt0) or (dia&gt30))
cout <<"error...";
}
if (mes=2)
{
if ((dia&lt0) or (dia&gt28))
cout <<"error...";
}
}
else
cout <<"error...";

if

(correcto=0);
cout<<"la fecha no es correcta";
else
cout<<"la fecha es correcta";

cout <&ltdia<<"/"<&ltmes<<"/"<&ltanyo<<"/";
}

gracias por la ayuda

kike
01 de Noviembre del 2005
Una idea seria que coloques tu codigo de entrada de datos y de verificacion dentro de un bucle "do..while()".De esta manera cuando ya tienes los valores de la fecha, realizas la comprobacion y si es correcta sales del bucle, si no es correcta muestras el error, borras pantalla y repites bucle.

main()
{
int anyo;
int mes;
int dia;
int error=0;
do
{
//obtener anyo;
//obtener mes;
// obtener dia;

//if(verificas la composicion de la fecha, si todos los datos son correctos)
error++;
//else(si no es una fecha valida)
cout<<"fecha erronean";
clrscr();
}
while(!error);


Creo que algo asi deberia funcionarte, puedes guardar el dato que no es correcto para mostrarlo en el error.

Ya diras....