Buenas, ya habia preguntado algo sobre este programa y lo pude solucionar aca el link-> http://foro.elhacker.net/programacion_cc/ayuda_array_facil-t356132.0.html
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.
#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!
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;
}
}
}