ahora tengo otro problema, intente varias formas de hacer esto y no me sale, queria ver si ustedes podrian resolver la parte que me falta y explicar el code, muchas gracias
Aca la consigna de la funcion que me falta:
La otra función responderá a este prototipo: int Diferencia(fecha, fecha);, y debe devolver la diferencia en días entre las dos fechas suministradas.
Código
#include<iostream> #include<stdio.h> using namespace std; struct fecha{ unsigned short int dia:5; unsigned short int mes:4; unsigned short int anno:7; }; void mostrar(fecha x){ char *mes[]={"Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"}; cout<<"Fecha:"<<endl; cout<<" "<<x.dia<<" de "<<mes[x.mes-1]<<" de "<<(x.anno + 1960)<<endl; } bool Biciesto(fecha x){ if((x.anno+1960)%2==0)cout<<"FEBRERO ES BICIESTO"<<endl; else cout<<"FEBRERO NO ES BICIESTO"<<endl; } bool ValidarFecha(fecha x){ bool tof=true; int DiaMes[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; if (x.mes>=1){ if(x.mes>12) tof=false; } else tof=false; if (tof==true){ if(x.dia>=1){ switch(x.mes){ case 0:{if(x.dia>DiaMes[x.mes-1])tof=false;} case 1:{if(x.dia>DiaMes[x.mes-1])tof=false;} case 2:{ Biciesto(x); if(x.dia>DiaMes[x.mes-1])tof=false; } case 3:{if(x.dia>DiaMes[x.mes-1])tof=false;} case 4:{if(x.dia>DiaMes[x.mes-1])tof=false;} case 5:{if(x.dia>DiaMes[x.mes-1])tof=false;} case 6:{if(x.dia>DiaMes[x.mes-1])tof=false;} case 7:{if(x.dia>DiaMes[x.mes-1])tof=false;} case 8:{if(x.dia>DiaMes[x.mes-1])tof=false;} case 9:{if(x.dia>DiaMes[x.mes-1])tof=false;} case 10:{if(x.dia>DiaMes[x.mes-1])tof=false;} case 11:{if(x.dia>DiaMes[x.mes-1])tof=false;} } } } return tof; } int CompararFechas(fecha x,fecha y){ if(x.anno>y.anno)return 1; else{ if(x.anno<y.anno)return -1; else if(x.mes>y.mes)return 1; else if(x.mes<y.mes)return -1; else if(x.dia>y.dia)return 1; else if(x.dia<y.dia)return -1; else return 0; } } int main(){ int temp=0; fecha x,y; //aca podria ver decalarado un vector ejemplo: fecha[1]; ( fecha[0] y fecha [1]) //que me resutltaria mas facil para trabajar con bucles mas adelante cout<<"Introduzca Fecha: "<<endl; cout<<"Dia (ej: 31): ";cin>>temp;x.dia=temp; cout<<endl<<"Mes (ej: 12): ";cin>>temp;x.mes=temp; cout<<endl<<"Ano (del 1 al 127, a eso se le suma 1960): ";cin>>temp;x.anno=temp; cout<<endl; if (ValidarFecha(x)==true){ cout<<"La fecha es correcta."<<endl; } else cout<<"La fecha es incorrecta."<<endl; mostrar(x); cout<<endl<<"Introduzca otra fecha para compararla con la primera"<<endl; cout<<"Dia (ej: 31): ";cin>>temp;y.dia=temp; cout<<endl<<"Mes (ej: 12): ";cin>>temp;y.mes=temp; cout<<endl<<"Ano (del 1 al 127, a eso se le suma 1960): ";cin>>temp;y.anno=temp; cout<<endl; if (ValidarFecha(x)==true){ cout<<"La fecha es correcta."<<endl; } else cout<<"La fecha es incorrecta."<<endl; mostrar(y); if(CompararFechas(x,y)==1)cout<<"La primer fecha es mayor que la segunda"<<endl; else if(CompararFechas(x,y)==-1)cout<<"La segunda fecha es mayor que la primera"<<endl; else cout<<"Las fechas son iguales"<<endl; cout<<endl<<endl; }
ACLARO: NO es TAREA estoy estudiando por mi cuenta en un curso online y no me quiero saltar ningun ejercicio quiero entenderlos todos!
PD: se me habia ocurrido algo asi.. pero nose ni coomo seguir y creo que ya empese mal jaja.
Gracias!
Código
int Diferencia(fecha x,fecha y){ int auxano=0,auxmes=0,auxdia=0,tempp=0; if(x.anno>y.anno)auxano=(x.anno-y.anno); else {if(x.anno<y.anno)auxano=(y.anno-x.anno); } else { if(x.mes>y.mes)auxmes=(x.mes-y.mes); else if(x.mes<y.mes)auxmes=(y.mes-x.mes); else{ if(x.dia>y.dia){auxdia=(x.dia-y.dia);return auxdia;} else if (x.dia<y.dia)auxdia=(y.dia-x.dia);return auxdia; } } }