Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: Antonio Smith en 23 Agosto 2018, 20:23 PM

Título: Proyecto final C++
Publicado por: Antonio Smith en 23 Agosto 2018, 20:23 PM
Buenas tengo un proyecto final de programacion de c++ y no se donde empezar o como hacerlo me confunde alguien me puede ayudar? el problema es el siguiente :



Especificaciones del Proyecto:

1.   El programa calculara la edad de una persona en día, mes y año.
2.   Se utilizara como fecha de comparación el 21  de agosto  del 2018.
3.   Se deberán controlar TODOS los posibles eventos que se den el calculo de la fecha
4.   Criterios a controlar:
⦁   El año de nacimiento no puede ser mayor al año 2018.
⦁   Si el año de nacimiento es igual, el mes de nacimiento no puede ser mayor.
⦁   Si el año y mes son iguales, el día no puede ser mayor, pero si iguales.
⦁   Debe validar los meses de 30, 31 y 28 días. Ejemplo si introduce mes 09 (septiembre) el día no pueden ser mayores a 30.
⦁   Deberá validar los números negativos. Nadie nace en un año, mes o día negativo.
⦁   Los rangos de los años deberán ser del 1850 al 2018.
⦁   Los rangos de los meses deberán ser del 1 al 12.
⦁   Los rangos de los días puede variar del 1 al 28, 30 o 31.

Ejemplo de entrada y salida de datos:
Fecha Actual: son valores constantes. NO SE LEEN
Día: 21
Mes: 08
Año: 2018

Fecha de Nacimiento:
Día: 31
Mes: 01
Año: 1990

Usted tiene 28 años con 6 meses y 21 días.
* Faltan 5 meses y 10 días para su próximo cumpleaños.
Título: Re: Proyecto final C++
Publicado por: MAFUS en 23 Agosto 2018, 20:43 PM
No se hacen tareas.
Expón lo que tienes y te aclaramos dudas puntuales.
Título: Re: Proyecto final C++
Publicado por: Antonio Smith en 23 Agosto 2018, 21:20 PM
el detalle es el siguiente, lo tengo pero en c, solo que nose como pasarlo a c++, nose si cuente como hacerme la tarea.
Título: Re: Proyecto final C++
Publicado por: MAFUS en 23 Agosto 2018, 21:27 PM
Hombre, es un proyecto final. Pasar de C a C++ debería ser lo más sencillo.

Por cierto: de nada.

P.D.: se quedó un error en el código de cuándo hacía comprobaciones. La primera versión que subí no cumple con las especificaciones del enunciado. Ya está arreglado.
Título: Re: Proyecto final C++
Publicado por: Beginner Web en 2 Septiembre 2018, 22:39 PM
Puedes usar el tda fecha y algun calculo para realizar el calculo exacto de la edad de una persona

TDA FECHA

Código (cpp) [Seleccionar]
#include <iostream>
#include <math.h>

using namespace std;

const int MAX=3;
typedef int t_fecha[MAX];

void crear_fecha(t_fecha &n);
bool VALIDAR(t_fecha n);
void mostrar_fecha(t_fecha n);
void comparar_fechas(t_fecha n, t_fecha m);
void mayor_fechas(t_fecha n, t_fecha m);

int main()
{
t_fecha a, b;
crear_fecha(a);
crear_fecha(b);
comparar_fechas(a, b);
mayor_fechas(a, b);
system("pause");
return 0;
}

void crear_fecha(t_fecha &n)
{
do{
cout << "Ingrese dia: "; cin >> n[0];
cout << "Ingrese mes: "; cin >> n[1];
cout << "Inrese año : "; cin >> n[2];
}while(VALIDAR(n)==false);
mostrar_fecha(n);
}
bool VALIDAR(t_fecha n)
{
if(n[1]>=1 && n[1]<=12){
switch(n[1]){
case 1: if(n[0]>0 && n[0]<32){return true;}else{return false;}; break;
case 2: if(n[2]%4==0){
if(n[0]>0 && n[0]<30){return true;}else{return false;}
}
else{
if(n[0]>0 && n[0]<29){return true;}else{return false;}
}; break;
case 3: if(n[0]>0 && n[0]<32){return true;}else{return false;}; break;
case 4: if(n[0]>0 && n[0]<31){return true;}else{return false;}; break;
case 5: if(n[0]>0 && n[0]<32){return true;}else{return false;}; break;
case 6: if(n[0]>0 && n[0]<31){return true;}else{return false;}; break;
case 7: if(n[0]>0 && n[0]<32){return true;}else{return false;}; break;
case 8: if(n[0]>0 && n[0]<32){return true;}else{return false;}; break;
case 9: if(n[0]>0 && n[0]<31){return true;}else{return false;}; break;
case 10: if(n[0]>0 && n[0]<32){return true;}else{return false;}; break;
case 11: if(n[0]>0 && n[0]<31){return true;}else{return false;}; break;
case 12: if(n[0]>0 && n[0]<32){return true;}else{return false;}; break;
default: return false;
}
}
else{
return false;
}
}

void mostrar_fecha(t_fecha n)
{
cout << n[0] << "/" << n[1] << "/" << n[2] << endl;
}

void comparar_fechas(t_fecha n, t_fecha m)
{
if(n[0]==m[0] && n[1]==m[1] && n[2]==m[2]){
cout << "Las fechas son iguales" << endl;
}
else{
cout << "Las fechas son diferentes" << endl;
}

}

void mayor_fechas(t_fecha n, t_fecha m)
{
if(n[2]>m[2]){
cout << "Es mayor "; mostrar_fecha(n);
}
else{
if(n[2]<m[2]){
cout << "Es mayor "; mostrar_fecha(m);
}
else{
if(n[1]>m[1]){
cout << "Es mayor "; mostrar_fecha(n);
}
else{
if(n[1]<m[1]){
cout << "Es mayor "; mostrar_fecha(m);
}
else{
if(n[0]>m[0]){
cout << "Es mayor "; mostrar_fecha(n);
}
else{
if(n[0]<m[0]){
cout << "Es mayor "; mostrar_fecha(m);
}
else{
cout << "Son iguales" << endl;
}
}
}
}
}
}
}


CALCULO EDAD

Código (cpp) [Seleccionar]
[int d, m ,a, edad;
cout << "8/8/2014 << endl;
cout << "COLOQUE FECHA DE NACIMIENTO EN FORMATO DD/MM/AAAA:" << endl;
cin >> d >> m >> a;
edad=2014-a;
if(m==8){
if(d<8){
edad++;
}
else{
if(d>8){
edad--;
}
}
}
else{
if(m<8){
edad++;
}
else{
edad--;
}
}