elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Ayuda]Un programa en C de Estructuras
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Ayuda]Un programa en C de Estructuras  (Leído 2,228 veces)
renzo.roca

Desconectado Desconectado

Mensajes: 2


Ver Perfil
[Ayuda]Un programa en C de Estructuras
« en: 12 Enero 2015, 08:22 am »

Hola este es mi primero Post , soy un estudianto de 1ero de  Ing.informática de la UAH y recien estoy empezando a programa. Este ejercicio me está costando mucho, quisiera ayuda para poder resolverlo  El enunciado es el siguiente:

1.Implemente las estructuras de datos que permitan almacenar información
anónima sobre personas con objeto de hacer un estudio estadístico. Así, se
deberá almacenar el número de secuencia, sexo y edad de cada persona.
Programe además un par de funciones para (a) leer por teclado datos
relativos a una persona y (b) para mostrar dichos datos por pantalla.  

2.Sin utilizar arrays, programe un software que utilice lo programado en el
ejercicio 1 para leer la edad de 10 personas y calcular la media de edad
general, la media por sexo, la cantidad de mujeres que tienen entre 13 y 16
años y el número de hombres menores de 20 años.  

3.Amplíe el ejercicio anterior mostrando al final del proceso los datos
completos de la mujer y el hombre más jóvenes de los introducidos.


Esto es lo que hasta ahora tengo

Código
  1. #include <stdio.h>
  2.  
  3.  
  4. struct persona
  5. {
  6.       int secuencia;
  7.       char sexo;
  8.       int edad;
  9. };
  10.  
  11. struct persona leerDatos()
  12. {
  13.     struct persona p1;
  14.      printf("Introduzca numero de secuencia \n ");
  15.      fflush(stdin);
  16.      scanf("%d",&p1.secuencia);
  17.  
  18.     printf("Teclee el sexo, H(hombre) o M(mujer)\n");
  19.     fflush(stdin);
  20.     scanf("%c",&p1.sexo);
  21.     printf("Introduzca la edad \n");
  22.     fflush(stdin);
  23.     scanf("%d",&p1.edad);
  24.  
  25.     return p1;
  26.  
  27. }    
  28.  
  29. void imprimirDatos(struct persona p1)
  30. {      printf(" Numero de secuencia:%d\n",p1.secuencia);
  31.     printf(" Sexo:%c\n",p1.sexo);
  32.     printf(" Edad:%d\n",p1.edad);
  33.  
  34. }          
  35. int main()
  36. {
  37.   struct persona p1,p2,p3,p4,p5,p6,p7,p8,p9,p10;
  38.   int mediaEdad;
  39.  
  40.   p1=leerDatos();
  41.   p2=leerDatos();
  42.   p3=leerDatos();
  43.   p4=leerDatos();
  44.   p5=leerDatos();
  45.   p6=leerDatos();
  46.   p7=leerDatos();
  47.   p8=leerDatos();
  48.   p9=leerDatos();
  49.   p10=leerDatos();
  50.  
  51.   //calculo de media edad //
  52.   mediaEdad=(p1.edad+p2.edad+p3.edad+p4.edad+p5.edad+p6.edad+p7.edad+p8.edad+p9.edad+p10.edad)/10;
  53.   printf("La media es %d",mediaEdad);
  54.  
  55.  
  56.  
  57.    system("pause");
  58.  
  59.    return 0;
  60. }
  61.  


Agradeceria mucho si alguien pudiera ayudarme.

Mod: Al publicar Código usa etiquetas GeSHi


« Última modificación: 15 Enero 2015, 00:24 am por renzo.roca » En línea

BlackM4ster


Desconectado Desconectado

Mensajes: 499


Error, el teclado no funciona. Pulse F1 para continuar


Ver Perfil WWW
Re: [Ayuda]Un programa en C
« Respuesta #1 en: 12 Enero 2015, 13:36 pm »

usa bucles for


En línea

- Pásate por mi web -
https://codeisc.com
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: [Ayuda]Un programa en C
« Respuesta #2 en: 12 Enero 2015, 18:02 pm »

2.Sin utilizar arrays
Debido a eso el programa terminara excesivamente largo y deberías comentarlo con tu profesor: solo sirve para justificar el uso de bucles (un poco excedido en mi opinión).

Los valores a calcular son:
calcular la media de edad general
la media por sexo
la cantidad de mujeres que tienen entre 13 y 16 años
el número de hombres menores de 20 años.
El primero ya lo tienes.

En el segundo inicializas un contador a cero y revisas cada una de las variables: si es de sexo masculino incrementas el contador en una unidad. Una vez tienes el numero de personas de sexo masculino el femenino lo calculas en base a una resta.

En el tercero de nuevo inicializas un contador a cero y revisas cada una de las variables, si es de sexo femenino y su edad esta entre 13 y 16 incrementas el contador:
Código
  1. int mujeres_13_16 = 0;
  2.  
  3. /* ... */
  4.  
  5. mujeres_13_16 = 0;
  6. if (p1.sexo == 'f' && p1.edad >= 13 && p1.edad <= 16)
  7.   mujeres_13_16++;
  8. if (p2.sexo == 'f' && p2.edad >= 13 && p2.edad <= 16)
  9.   mujeres_13_16++;
  10. if (p3.sexo == 'f' && p3.edad >= 13 && p3.edad <= 16)
  11.   mujeres_13_16++;
  12. /* ... */
  13.  
  14. printf("Mujeres entre 13 y 16: %d\n", mujeres_13_16);]

El cuarto es similar al tercero pero mas fácil ya que la condición a verificar es mas simple: sexo igual a 'f' y edad menor que 20.

3.Amplíe el ejercicio anterior mostrando al final del proceso los datos completos de la mujer y el hombre más jóvenes de los introducidos.
El proceso es idéntico en las dos operaciones con la única diferencia en el campo sexo. Debes utilizar una estructura auxiliar donde copiar los datos de la persona mas joven.

Verificas una por una las variables y si el campo es 'f' (o 'm' en el segundo ejercicio) verificas si la edad es menor que el almacenado en el auxiliar: si es el caso copias la variable en el auxiliar. Mas o menos así:
Código
  1. struct persona mj; /* Mujer mas joven*/
  2.  
  3. /* ... */
  4.  
  5. mj.edad = 9999; /* Centinela*/
  6.  
  7. if (p1.sexo == 'f' && p1.edad < mj.edad)
  8.   mj = p1;
  9. if (p2.sexo == 'f' && p2.edad < mj.edad)
  10.   mj = p2;
  11. if (p3.sexo == 'f' && p3.edad < mj.edad)
  12.   mj = p3;
  13. /* ... */
  14.  
  15. if (mj.edad == 9999)
  16.   puts("No hay datos de mujeres");
  17. else {
  18.   /* mj almacena los datos de la mujer mas joven */
  19. }

Un saludo
En línea

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
renzo.roca

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: [Ayuda]Un programa en C
« Respuesta #3 en: 15 Enero 2015, 00:04 am »

Gracias por responderme :D
ya casi lo tengo listo, solo tengo un error en calcular las medias de las edades de los hombres y de las mujeres. Me da lo mismo que la media general.


Muchas gracias a todos, estaré molestado por aqui cuando tenga dudas :D









Código
  1. #include <stdio.h>
  2.  
  3.  
  4. typedef struct
  5. {
  6.       int secuencia;
  7.       char sexo;
  8.       int edad;
  9. }persona;
  10.  
  11. //funcion estudio estadistico//      
  12. persona leerDatos()
  13. {
  14.      int i,sumaEdad=0,cantidadHombres=0,cantidadMujeres=0,hombreMenor20=0,mujerEntre13y16=0;
  15.      float mediaEdad=0;
  16.      int sumaEdadMujer=0,sumaEdadHombre=0;
  17.      persona p1;
  18.      persona hMenor;
  19.      persona mMenor;
  20.  
  21.      p1.secuencia=1;
  22.  
  23.     printf("Introduzca el sexo de la persona %d , H(HOMBRE) o M(MUJER)\n",p1.secuencia);
  24.     fflush(stdin);
  25.     scanf("%c",&p1.sexo);                
  26.     printf("Introduzca la edad de la persona %d \n",p1.secuencia);
  27.     fflush(stdin);
  28.     scanf("%d",&p1.edad);
  29.  
  30.          sumaEdad+=p1.edad;
  31.  
  32.       if (p1.sexo=='H' || p1.sexo=='h')
  33.     { cantidadHombres++;
  34.     sumaEdadHombre+=p1.edad;
  35.     hMenor.edad=p1.edad;
  36.     hMenor.sexo=p1.sexo;
  37.     hMenor.secuencia=p1.secuencia;
  38.           if (p1.edad<20)
  39.           { hombreMenor20++;}
  40.           }
  41.  
  42.       if (p1.sexo=='M' || p1.sexo=='m')
  43.     { cantidadMujeres++;
  44.      mMenor.edad=p1.edad;
  45.      mMenor.sexo=p1.sexo;
  46.      mMenor.secuencia=p1.secuencia;
  47.      sumaEdadMujer+=p1.sexo;
  48.  
  49.           if (p1.edad<16 && p1.edad>13)
  50.           { mujerEntre13y16++;}
  51.           }    
  52.  
  53.  
  54.     //bucle for//
  55.      for(i=2;i<=10 ;i++)
  56.      {
  57.        p1.secuencia=i;
  58.  
  59.  
  60.     printf("Introduzca el sexo de la persona %d , H(HOMBRE) o M(MUJER)\n",p1.secuencia);
  61.     fflush(stdin);
  62.     scanf("%c",&p1.sexo);                
  63.     printf("Introduzca la edad de la persona %d \n",p1.secuencia);
  64.     fflush(stdin);
  65.     scanf("%d",&p1.edad);
  66.  
  67.     sumaEdad+=p1.edad;
  68.     mediaEdad=sumaEdad/p1.secuencia;
  69.  
  70.       if (p1.sexo=='H' || p1.sexo=='h')
  71.     { cantidadHombres++;
  72.        sumaEdadHombre+=p1.edad;
  73.        if (p1.edad<hMenor.edad)
  74.            {hMenor.edad=p1.edad;
  75.             hMenor.sexo=p1.sexo;
  76.             hMenor.secuencia=p1.secuencia;
  77.             }
  78.  
  79.           if (p1.edad<20)
  80.           { hombreMenor20++;}
  81.           }
  82.  
  83.       if (p1.sexo=='M' || p1.sexo=='m')
  84.     { cantidadMujeres++;
  85.        sumaEdadMujer+=p1.edad;
  86.        if (p1.edad<mMenor.edad)
  87.        {
  88.      mMenor.edad=p1.edad;
  89.      mMenor.sexo=p1.sexo;
  90.      mMenor.secuencia=p1.secuencia;
  91.      }
  92.  
  93.           if (p1.edad<16 && p1.edad>13)
  94.           { mujerEntre13y16++;}
  95.           }    
  96.           }      
  97.  
  98.  
  99.     printf("\n La edad media es : %g años ",mediaEdad);
  100.      printf("\n La edad media de hombres es : %g años ",sumaEdadHombre/cantidadHombres);
  101.       printf("\n La edad media de mujeres es : %g años ",sumaEdadMujer/cantidadMujeres);
  102.        printf("\n La cantidad de hombres menor de 20 años es : %d",hombreMenor20);
  103.         printf("\n La cantidad de mujeres entre 13 y 16 años es : %d",mujerEntre13y16);
  104.  
  105.     printf("\n El hombre mas joven es la persona %d de edad %d",hMenor.secuencia,hMenor.edad);
  106.     printf("\n El mujer mas joven es la persona %d de edad %d",mMenor.secuencia,mMenor.edad);
  107.  
  108.  
  109.     return p1;
  110.  
  111. }    
  112.  
  113.  
  114. //funcion imprimir//
  115.  
  116. void imprimirDatos(persona p)
  117. {      printf(" Numero de secuencia:%d\n",p.secuencia);
  118.     printf(" Sexo:%c\n",p.sexo);
  119.     printf(" Edad:%d\n",p.edad);
  120.  
  121. }  
  122.  
  123. // main//
  124.  
  125. int main()
  126. {
  127.  
  128.    leerDatos();
  129.  
  130.  
  131.  
  132.  
  133.    system("pause");
  134.  
  135.    return 0;
  136. }
  137.  
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con estructuras
Programación C/C++
chechopineda 8 5,114 Último mensaje 16 Agosto 2010, 04:19 am
por chechopineda
Duda programa con estructuras de control « 1 2 »
Programación C/C++
jamatbar 14 7,419 Último mensaje 11 Noviembre 2011, 12:05 pm
por jamatbar
[Ayuda] Hice un programa con estructuras en C
Programación C/C++
Proxmond 0 1,537 Último mensaje 1 Junio 2014, 23:04 pm
por Proxmond
Programa de arreglo de estructuras en C
Programación C/C++
daz08 2 6,737 Último mensaje 5 Octubre 2014, 22:02 pm
por daz08
Ayuda Programa con estructuras C
Programación C/C++
piete2 1 1,853 Último mensaje 3 Diciembre 2014, 02:58 am
por rir3760
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines