Translate

martes, 25 de noviembre de 2014

Libro: Fundamentos de la programación piensa en C, Cairo (2014). Capítulo: 3

Construye un diagrama de flujo y el correspondiente programa en C que, al recibir como datos el peso, la altura y el sexo de N personas que pertenecen a un estado de la República Mexicana, obtenga el promedio del peso (edad ≥ 18) y el promedio de la altura (edad ≥ 18), tanto de la población masculina como de la femenina.
Se ingresa 1 si es hombre y 0 si es mujer.

Análisis del problema: Necesitamos un programa que nos ayude a determinar un promedio de altura y un promedio de peso entre hombres y mujeres ingresados, ya sea en grandes cantidades o simplemente pocas personas. El programa clasificara cada persona de acuerdo a su sexo y si cumple con la condición de que sean mayores o sean de una edad de 18 años, al final el programa dará salida al promedio general de peso y altura de hombres y mujeres.
Datos de entrada: Edad, sexo, altura, peso.
Datos de salida: Promedio general de altura y peso de hombres y mujeres.
Datos adicionales: Ninguno.
Proceso:
El programa cuenta con dos contadores para hombres y para mujeres respectivamente con cuatro variables que van a tomar el rol de acumuladoras, ya que se necesitara almacenar el peso y la altura de cada persona de edad mayor o igual a 18 sea hombre o mujer, además si el sexo o la edad son valores incorrectos el programa desplegara un mensaje de error y se deberá volver a escribir los datos, el programa utilizara además un ciclo do while en otras palabras una sentencia repetitiva para cada persona que ingrese al sus datos. En el ciclo do-while será evaluada la variable sexo con una sentencia selectiva, guardando así los datos introducidos en los acumuladores y en los contadores.


 La condición del ciclo do-while es si la respuesta del usuario es de terminar entonces este procederá a la finalización del programa y empezara a hacer el cálculo de los promedios de la altura y el peso de cada hombre y cada mujer ingresados mediante cada acumulador y cada contador respectivamente, si en el caso de que exista valores nulos por parte de hombres o mujeres o ambos a la vez el programa utilizara sentencias condicionales, permitiendo así que el programa de salida a valores de cero y no valores no definidos. Por último el programa da salida al promedio de cada hombre y mujer respecto a su peso y a su altura



Diagrama de flujo:









Programa en C:






Codigo fuente:

//Algoritmo: Promedio
//Nombre:David Ponce
//Fecha: 24/11/2014
/* Descripcion: El programa cuenta con dos contadores para hombres y para mujeres respectivamente con cuatro varibles que van a tomar el rol de acumuladoras,
 ya que se necesitara almacenar el peso y la altura de cada persona de edad mayor o igual a 18 sea hombre o mujer,
 ademas si el sexo o la edad son valores incorrectos el programa desplegara un mensaje de error y se debera volver a escribir los datos,
  el programa utilizara ademas un ciclo do while en otras palabras una sentencia repetitiva para cada persona que ingrese al sus datos. En el ciclo do while
  sera evaluada la variable sexo con una sentencia selectiva, guardando asi los datos introducidos en los acumuladores y en los contadores. La
  condicion del ciclo do while es si la respuesta del usuario es de terminar entonces este procedera a la finalizacion del programa y empezara a hacer el 
  calculo de los promedios de la altura y el peso de cada hombre y cada mujer ingresados mediante cada acumulador y cada contador respectivamente, si en el caso
  de que exista valores nulos por parte de hombres o mujeres o ambos a la vez el programa utilizara sentencias condicionales, permitiendo asi que el programa 
  de salida a valores de cero y no valores no definidos. Por ultimo el programa da salida al promedio de cada hombre y mujer respecto a su peso y a su altura.*/
  
   #include <stdio.h>
   #include <math.h>
   

main()

{
float phombresp=0, pmujeresp=0, phombresh=0, pmujeresh=0, p=0, h=0, pthombresp, pthombresh, ptmujeresh, ptmujeresp;
int totalh=0, totalm=0, sex, e, r;
do
{
printf("\n Ingrese su sexo 1 Hombres, 0 Mujeres: ");
scanf("%d", &sex);
printf("\n Ingrese su edad: ");
scanf("%d", &e);
printf("\n Ingrese su altura: ");
scanf("%f", &h);
printf("\n Ingrese su peso: ");
scanf("%f", &p);
if ((sex==1||sex==0)&&e>=18)
{
switch (sex)
{
case 0: 
pmujeresh=pmujeresh+h;
pmujeresp=pmujeresp+p;
totalm++;
break;
case 1: 
phombresp=phombresp+p;
phombresh=phombresh+h;
totalh++;
break;
}
}
else 
{
printf("\n Datos incorrectos");
}
printf("\n Hay mas personas? Presione 1 para continuar, 0 para terminar ");
scanf("%d", &r);
}while (r==1);
if ((pmujeresp!=0&&pmujeresh!=0)&&(phombresp!=0&&phombresh!=0))
{
pthombresp=phombresp/totalh;
pthombresh=phombresh/totalh;
ptmujeresp=pmujeresp/totalm;
ptmujeresh=pmujeresh/totalm;
printf("\n El promedio del peso de los hombres es %.2f ", pthombresp);
printf("\n El promedio de la altura de los hombres es %.2f ", pthombresh);
printf("\n El promedio del peso da las mujeres es %.2f ", ptmujeresp);
printf("\n El promedio de la altura de las mujeres es %.2f ", ptmujeresh);
}
else
{
if((pmujeresp!=0&&pmujeresh!=0)&&(phombresp==0&&phombresh==0) )
{
pthombresp=0;
pthombresh=0;
ptmujeresp=pmujeresp/totalm;
ptmujeresh=pmujeresh/totalm;
printf("\n El promedio del peso de los hombres es %.2f ", pthombresp);
printf("\n El promedio de la altura de los hombres es %.2f ", pthombresh);
printf("\n El promedio del peso da las mujeres es %.2f ", ptmujeresp);
printf("\n El promedio de la altura de las mujeres es %.2f ", ptmujeresh);
}
else
{
pthombresp=phombresp/totalh;
pthombresh=phombresh/totalh;
ptmujeresp=0;
ptmujeresh=0;
printf("\n El promedio del peso de los hombres es %.2f ", pthombresp);
printf("\n El promedio de la altura de los hombres es %.2f ", pthombresh);
printf("\n El promedio del peso da las mujeres es %.2f ", ptmujeresp);
printf("\n El promedio de la altura de las mujeres es %.2f ", ptmujeresh);
}
}
getch();
}

3 comentarios: