Programa para clasificar por edades en C

Iniciado por sora_ori, 24 Abril 2013, 21:16 PM

0 Miembros y 1 Visitante están viendo este tema.

sora_ori

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



    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>

    int main(){
       
        int edad;
        int i=0;
       
        while (i < 10){
              printf("Escribe una edad: ");
              scanf("%d", &edad);
             
              if ((edad > 0) && (edad < 120)){
                        i++;
              }
        }

        if (edad < 18){
                 printf("\nVete a pasear");
        }
        if ((edad >= 18) && (edad < 27)){
                 printf("\nVete a la discoteca");
        }
        if ((edad >= 18) && (edad > 29)){
                 printf("\nVete al cine");
        }
        if (edad >= 50){
                 printf("\nVete al teatro");
        }

        printf("\n\n");
      system("pause");
      return 0;
    }

gorystyle

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 :


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

rir3760

Cita de: sora_ori en 24 Abril 2013, 21:16 PMEsta 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í:
if (edad < 29){
   menores_de_29++;
   
   if (edad < 18)
      menores_de_18++;
}else if (edad > 29){
   mayores_de_29++;
   
   if (edad > 49)
      mayores_de_49++;
}


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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

mr.blood

Solo decir esto ;).

(edad >= 18) && (edad > 29)

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

Sa1uDoS