Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: sora_ori en 24 Abril 2013, 21:16 pm



Título: Programa para clasificar por edades en C
Publicado por: sora_ori en 24 Abril 2013, 21:16 pm
Muy buenas,

Esta vez estoy haciendo un programa para jugar con las edades de las personas, y según la edad que tenga que muestre un mensaje u otro. A ver si me echan una mano para corregir errores :P


  • Pedirá la edad de 10 personas
  • La edad de estas personas debe ser un número entre 0 y 120. Habrá que validar que la edad sea correcta. Al final, tendremos 10 edades correctas.
  • Escribirá uno o varios mensajes según el siguiente criterio:
Mensajes:

Si hay alguna persona de menos de 18 años: Vaya a Pasear
Si todos tienen 18 o más años, pero hay al menos 4 personas con menos de 29 años: Vaya a la discoteca
Si todos tienen 18 o más años, pero hay al menos 4 personas con más de 29 años: Ir al cine
Si todos tienen al menos 50 años: Ir al teatro



Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. int main(){
  6.  
  7.    int edad;
  8.    int i=0;
  9.  
  10.    while (i < 10){
  11.          printf("Escribe una edad: ");
  12.          scanf("%d", &edad);
  13.  
  14.          if ((edad > 0) && (edad < 120)){
  15.                    i++;
  16.          }
  17.    }
  18.  
  19.    if (edad < 18){
  20.             printf("\nVete a pasear");
  21.    }
  22.    if ((edad >= 18) && (edad < 27)){
  23.             printf("\nVete a la discoteca");
  24.    }
  25.    if ((edad >= 18) && (edad > 29)){
  26.             printf("\nVete al cine");
  27.    }
  28.    if (edad >= 50){
  29.             printf("\nVete al teatro");
  30.    }
  31.  
  32.    printf("\n\n");
  33.  system("pause");
  34.  return 0;
  35. }
  36.  


Título: Re: Programa para clasificar por edades en C
Publicado por: gorystyle en 24 Abril 2013, 21:40 pm
pues amigo asi ojeandolo veo que te hacen falta primero que todo contadores para las edades asi sabes cuantos menores de 18 cuantos mayores de 18 cuantos menores de 29 cuantos mayores de 50. dentro del while debes aumentar estos contadores dependiendo de que edad escoja el usuario al salir haces los calculos x ejemplo :

Código:
if(contaMenorDiesiocho > 0)//si hay almenos un menor de 18
{
   cout << "Valla a pasear"  << endl;
}
if(contaMayCincuenta == 10)//todos son mayores de 50 años
{
   cout << "ir al teatro" << endl;
}

y asi con las otras condiciones


Título: Re: Programa para clasificar por edades en C
Publicado por: rir3760 en 25 Abril 2013, 05:59 am
Esta vez estoy haciendo un programa para jugar con las edades de las personas, y según la edad que tenga que muestre un mensaje u otro.

[...]

A) Si hay alguna persona de menos de 18 años: Vaya a Pasear
B) Si todos tienen 18 o más años, pero hay al menos 4 personas con menos de 29 años: Vaya a la discoteca
C) Si todos tienen 18 o más años, pero hay al menos 4 personas con más de 29 años: Ir al cine
D) Si todos tienen al menos 50 años: Ir al teatro
Un problema y un detalle con el enunciado:

El problema: si las edades introducidas son todas iguales a 29 no se presenta un mensaje.
El detalle: el caso D se debe procesar antes que el C, esto porque si todos son mayores de 49 se cumple con las condiciones de los casos C y D.

Como ya te comento gorystyle en el cuerpo del bucle donde lees cada una de las edades debes incrementar los contadores que correspondan a la edad, mas o menos así:
Código
  1. if (edad < 29){
  2.   menores_de_29++;
  3.  
  4.   if (edad < 18)
  5.      menores_de_18++;
  6. }else if (edad > 29){
  7.   mayores_de_29++;
  8.  
  9.   if (edad > 49)
  10.      mayores_de_49++;
  11. }

Después de leer todas las edades solo tienes que utilizar un condicional "if ... else if ..." verificando si se cumple la condición de alguno de los cuatro casos.

Un saludo


Título: Re: Programa para clasificar por edades en C
Publicado por: mr.blood en 26 Abril 2013, 09:44 am
Solo decir esto ;).

Código
  1. (edad >= 18) && (edad > 29)

Si son mayores de 29 obviamente son mayores de 18, podrias eliminar una comparacion :).

Sa1uDoS