Foro de elhacker.net

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
  1. #include <iostream>
  2. #include <math.h>
  3.  
  4. using namespace std;
  5.  
  6. const int MAX=3;
  7. typedef int t_fecha[MAX];
  8.  
  9. void crear_fecha(t_fecha &n);
  10. bool VALIDAR(t_fecha n);
  11. void mostrar_fecha(t_fecha n);
  12. void comparar_fechas(t_fecha n, t_fecha m);
  13. void mayor_fechas(t_fecha n, t_fecha m);
  14.  
  15. int main()
  16. {
  17. t_fecha a, b;
  18. crear_fecha(a);
  19. crear_fecha(b);
  20. comparar_fechas(a, b);
  21. mayor_fechas(a, b);
  22. system("pause");
  23. return 0;
  24. }
  25.  
  26. void crear_fecha(t_fecha &n)
  27. {
  28. do{
  29. cout << "Ingrese dia: "; cin >> n[0];
  30. cout << "Ingrese mes: "; cin >> n[1];
  31. cout << "Inrese año : "; cin >> n[2];
  32. }while(VALIDAR(n)==false);
  33. mostrar_fecha(n);
  34. }
  35. bool VALIDAR(t_fecha n)
  36. {
  37. if(n[1]>=1 && n[1]<=12){
  38. switch(n[1]){
  39. case 1: if(n[0]>0 && n[0]<32){return true;}else{return false;}; break;
  40. case 2: if(n[2]%4==0){
  41. if(n[0]>0 && n[0]<30){return true;}else{return false;}
  42. }
  43. else{
  44. if(n[0]>0 && n[0]<29){return true;}else{return false;}
  45. }; break;
  46. case 3: if(n[0]>0 && n[0]<32){return true;}else{return false;}; break;
  47. case 4: if(n[0]>0 && n[0]<31){return true;}else{return false;}; break;
  48. case 5: if(n[0]>0 && n[0]<32){return true;}else{return false;}; break;
  49. case 6: if(n[0]>0 && n[0]<31){return true;}else{return false;}; break;
  50. case 7: if(n[0]>0 && n[0]<32){return true;}else{return false;}; break;
  51. case 8: if(n[0]>0 && n[0]<32){return true;}else{return false;}; break;
  52. case 9: if(n[0]>0 && n[0]<31){return true;}else{return false;}; break;
  53. case 10: if(n[0]>0 && n[0]<32){return true;}else{return false;}; break;
  54. case 11: if(n[0]>0 && n[0]<31){return true;}else{return false;}; break;
  55. case 12: if(n[0]>0 && n[0]<32){return true;}else{return false;}; break;
  56. default: return false;
  57. }
  58. }
  59. else{
  60. return false;
  61. }
  62. }
  63.  
  64. void mostrar_fecha(t_fecha n)
  65. {
  66. cout << n[0] << "/" << n[1] << "/" << n[2] << endl;
  67. }
  68.  
  69. void comparar_fechas(t_fecha n, t_fecha m)
  70. {
  71. if(n[0]==m[0] && n[1]==m[1] && n[2]==m[2]){
  72. cout << "Las fechas son iguales" << endl;
  73. }
  74. else{
  75. cout << "Las fechas son diferentes" << endl;
  76. }
  77.  
  78. }
  79.  
  80. void mayor_fechas(t_fecha n, t_fecha m)
  81. {
  82. if(n[2]>m[2]){
  83. cout << "Es mayor "; mostrar_fecha(n);
  84. }
  85. else{
  86. if(n[2]<m[2]){
  87. cout << "Es mayor "; mostrar_fecha(m);
  88. }
  89. else{
  90. if(n[1]>m[1]){
  91. cout << "Es mayor "; mostrar_fecha(n);
  92. }
  93. else{
  94. if(n[1]<m[1]){
  95. cout << "Es mayor "; mostrar_fecha(m);
  96. }
  97. else{
  98. if(n[0]>m[0]){
  99. cout << "Es mayor "; mostrar_fecha(n);
  100. }
  101. else{
  102. if(n[0]<m[0]){
  103. cout << "Es mayor "; mostrar_fecha(m);
  104. }
  105. else{
  106. cout << "Son iguales" << endl;
  107. }
  108. }
  109. }
  110. }
  111. }
  112. }
  113. }
  114.  

CALCULO EDAD

Código
  1. [int d, m ,a, edad;
  2. cout << "8/8/2014 << endl;
  3. cout << "COLOQUE FECHA DE NACIMIENTO EN FORMATO DD/MM/AAAA:" << endl;
  4. cin >> d >> m >> a;
  5. edad=2014-a;
  6. if(m==8){
  7. if(d<8){
  8. edad++;
  9. }
  10. else{
  11. if(d>8){
  12. edad--;
  13. }
  14. }
  15. }
  16. else{
  17. if(m<8){
  18. edad++;
  19. }
  20. else{
  21. edad--;
  22. }
  23. }