Ejercicios : Estadísticas con estructuras y matrices
La práctica o ejercicios con solución que se propone es realizar una matriz de estructuras y a continuación realizar una estadística sobre la misma, utilizando para realizar el calculo de los datos matrices para almacenar los valores de los datos mientras se solicitan.
Los ejercicios y prácticas propuestos son de una nueva serie dedicada a la programación en c, en este caso se realizan ejercicios, en el cual la solución del mismo se ha planteado de cierta forma por el usuario del blog www.aprendoencasa.es que lo ha solicitado.
Vuelvo a comentar que no es la única solución posible y que la forma de mejorar siempre estas prácticas o ejercicios es que aportéis vuestro granito de arena utilizando para ello los comentarios. Un saludo y gracias por vuestra visita.
/*
Curso gratuito online en modalidad de teleformacion de programación en c
Ejercicios y practicas de programación resueltas o con solución en lenguaje c
El siguiente ejercicio ha sido planteado por un usuario del blog
www.aprendoencasa.
Construya un programa en Lenguaje C que permita generar estadísticas de
un censo realizado en el Estado Miranda a 30 personas, los datos solicitados
a cada una de éstas son los siguientes: nombre, edad, sexo, nacionalidad
y peso. Tomando en consideración las siguientes categorías:
EDAD CATEGORÍA
0 a 10 Niño
11 a 15 Adolescente
16 a 25 Joven
26 a 35 Adulto
36 a 45 Maduro
45 en adelante Mayor
Determine:
a) Cantidad por categoría.
b) Cantidad de masculino y femenino por categoría.
c) Venezolano y extranjero por categoría.
d) Promedio de edad por categoría.
e) Porcentaje de personas por categoría.
f) Promedio de edad general.
g) Edad máxima y mínima general.
El siguiente ejercicio con solución o práctica de programación resuelta
pretende realizar una pequeña estadistica utilizando estructuras y matrices
para almacenar los datos, ha sido propuesta por un usuario del blog
www.aprendoencasa.com, al cual igual que al resto agradecemos su visita.
*/
// Librerias a utilizar
#include <stdio.h>
#include <stdlib.h>
// Definicion de valores maximos
#define MAX 10
#define CATEGORIAS 6
// Estructura para almacenar los datos
typedef struct {
char Nombre[50];
int Edad;
char Sexo;
char Nacionalidad[50];
float Peso;
} Ficha;
// Funcion principal
int main(int argc, char *argv[])
{
// Variables a utilizar auxiliares
int Contador=0;
// Crear la matriz para almacenar los datos
Ficha Datos[MAX];
// Crear Matriz para almacenar valores de categorias
float Categorias[CATEGORIAS][6];
// variables generales
float promedioedadgeneral = 0.0;
int totalpersonas = 0;
int edadmaxima = 0;
int edadminima = 0;
// Solicitar los datos de los participantes
printf("\n");
for(Contador=0;Contador<MAX;Contador++)
{
// Mencion al blog www.aprendoencasa.es
printf("\nDatos introducidos en www.aprendoencasa.com\n");
// Solicitar Nombre
printf("Nombre....: ");
scanf(" %[^\n]",Datos[Contador].Nombre);
// Solicitar Edad
printf("Edad......: ");
scanf(" %d",&Datos[Contador].Edad);
// Solicitar sexo
printf("Sexo.....: ");
scanf(" %c",&Datos[Contador].Sexo);
// Solicitar nacionalidad
printf("Nacionalidad..: ");
scanf(" %[^\n]",Datos[Contador].Nacionalidad);
// Solicitar peso
printf("Peso.....: ");
scanf(" %f",&Datos[Contador].Peso);
}
// Inicializar valores de la matriz de categorias para
// realizar las estadisticas
for(Contador=0;Contador<CATEGORIAS;Contador++)
{
Categorias[Contador][0] = 0.0; // Posicion para las cantidades
Categorias[Contador][1] = 0.0; // Posicion para sexo femenino
Categorias[Contador][2] = 0.0; // Posicion para sexo masculino
Categorias[Contador][3] = 0.0; // Posicion para pais
Categorias[Contador][4] = 0.0; // Posicion para extranjero
Categorias[Contador][5] = 0.0; // Promedio edad por categoria
}
// Analizar cantidad por categoria
for(Contador=0;Contador<MAX;Contador++)
{
// Generales
totalpersonas++;
promedioedadgeneral+=Datos[Contador].Edad;
if(Contador == 0) {
edadminima = Datos[Contador].Edad;
edadmaxima = Datos[Contador].Edad;
} else {
if(edadminima > Datos[Contador].Edad)
edadminima = Datos[Contador].Edad;
if(edadmaxima < Datos[Contador].Edad)
edadmaxima = Datos[Contador].Edad;
}
// Niños
if(Datos[Contador].Edad>=0 && Datos[Contador].Edad<=10) {
Categorias[0][0]++; // Cantidad por categoria
Categorias[0][5]+=Datos[Contador].Edad; // Calcular media edad
// Femenino y Masculino
if(Datos[Contador].Sexo=='H')
Categorias[0][1]++;
else
Categorias[0][2]++;
// Nacional o extranjero
if(strcmp("Nacional",Datos[Contador].Nacionalidad)==0)
Categorias[0][3]++;
else
Categorias[0][4]++;
}
// Adolescente
if(Datos[Contador].Edad>=11 && Datos[Contador].Edad<=15) {
Categorias[1][0]++;
Categorias[1][5]+=Datos[Contador].Edad; // Calcular media edad
// Femenino y Masculino
if(Datos[Contador].Sexo=='H')
Categorias[1][1]++;
else
Categorias[1][2]++;
// Nacional o extranjero
if(strcmp("Nacional",Datos[Contador].Nacionalidad)==0)
Categorias[1][3]++;
else
Categorias[1][4]++;
}
// Joven
if(Datos[Contador].Edad>=16 && Datos[Contador].Edad<=25) {
Categorias[2][0]++;
Categorias[2][5]+=Datos[Contador].Edad; // Calcular media edad
// Femenino y Masculino
if(Datos[Contador].Sexo=='H')
Categorias[2][1]++;
else
Categorias[2][2]++;
// Nacional o extranjero
if(strcmp("Nacional",Datos[Contador].Nacionalidad)==0)
Categorias[2][3]++;
else
Categorias[2][4]++;
}
// Adulto
if(Datos[Contador].Edad>=26 && Datos[Contador].Edad<=35) {
Categorias[3][0]++;
Categorias[3][5]+=Datos[Contador].Edad; // Calcular media edad
// Femenino y Masculino
if(Datos[Contador].Sexo=='H')
Categorias[3][1]++;
else
Categorias[3][2]++;
// Nacional o extranjero
if(strcmp("Nacional",Datos[Contador].Nacionalidad)==0)
Categorias[3][3]++;
else
Categorias[3][4]++;
}
// Maduro
if(Datos[Contador].Edad>=36 && Datos[Contador].Edad<=45) {
Categorias[4][0]++;
Categorias[4][5]+=Datos[Contador].Edad; // Calcular media edad
// Femenino y Masculino
if(Datos[Contador].Sexo=='H')
Categorias[4][1]++;
else
Categorias[4][2]++;
// Nacional o extranjero
if(strcmp("Nacional",Datos[Contador].Nacionalidad)==0)
Categorias[4][3]++;
else
Categorias[4][4]++;
}
// Mayor
if(Datos[Contador].Edad>=46) {
Categorias[5][0]++;
Categorias[5][5]+=Datos[Contador].Edad; // Calcular media edad
// Femenino y Masculino
if(Datos[Contador].Sexo=='H')
Categorias[5][1]++;
else
Categorias[5][2]++;
// Nacional o extranjero
if(strcmp("Nacional",Datos[Contador].Nacionalidad)==0)
Categorias[5][3]++;
else
Categorias[5][4]++;
}
}
// visualiza cantidad por categoria
printf("\nCategoria Niño Cantidad %.2f ",Categorias[0][0]);
printf("\nCategoria Adolescente Cantidad %.2f ",Categorias[1][0]);
printf("\nCategoria Joven Cantidad %.2f ",Categorias[2][0]);
printf("\nCategoria Adulto Cantidad %.2f ",Categorias[3][0]);
printf("\nCategoria Maduro Cantidad %.2f ",Categorias[4][0]);
printf("\nCategoria Mayor Cantidad %.2f ",Categorias[5][0]);
// visualiza cantidad por sexo masculino y femenino por categoria
printf("\nCategoria Niño Femenino Cantidad %.2f Masculino Cantidad %.2f",Categorias[0][1],Categorias[0][2]);
printf("\nCategoria Adolescente Femenino Cantidad %.2f Masculino Cantidad %.2f",Categorias[1][1],Categorias[1][2]);
printf("\nCategoria Joven Femenino Cantidad %.2f Masculino Cantidad %.2f",Categorias[2][1],Categorias[2][2]);
printf("\nCategoria Adulto Femenino Cantidad %.2f Masculino Cantidad %.2f",Categorias[3][1],Categorias[3][2]);
printf("\nCategoria Maduro Femenino Cantidad %.2f Masculino Cantidad %.2f",Categorias[4][1],Categorias[4][2]);
printf("\nCategoria Mayor Femenino Cantidad %.2f Masculino Cantidad %.2f",Categorias[5][1],Categorias[5][2]);
// visualiza porcentaje por categoria
printf("\nCategoria Niño Porcentaje %.2f ",((Categorias[0][0]/totalpersonas)*100));
printf("\nCategoria Adolescente Porcentaje %.2f ",((Categorias[1][0]/totalpersonas)*100));
printf("\nCategoria Joven Porcentaje %.2f ",((Categorias[2][0]/totalpersonas)*100));
printf("\nCategoria Adulto Porcentaje %.2f ",((Categorias[3][0]/totalpersonas)*100));
printf("\nCategoria Maduro Porcentaje %.2f ",((Categorias[4][0]/totalpersonas)*100));
printf("\nCategoria Mayor Porcentaje %.2f ",((Categorias[5][0]/totalpersonas)*100));
// promedio de edad por categoria
printf("\nCategoria Niño Promedio edad %.2f ",(Categorias[0][5]/Categorias[0][0]));
printf("\nCategoria Adolescente Promedio edad %.2f ",(Categorias[1][5]/Categorias[1][0]));
printf("\nCategoria Joven Promedio edad %.2f ",(Categorias[2][5]/Categorias[2][0]));
printf("\nCategoria Adulto Promedio edad %.2f ",(Categorias[3][5]/Categorias[3][0]));
printf("\nCategoria Maduro Promedio edad %.2f ",(Categorias[4][5]/Categorias[4][0]));
printf("\nCategoria Mayor Promedio edad %.2f ",(Categorias[5][5]/Categorias[5][0]));
// visualiza cantidad nacionales y extranjero por categoria por categoria
printf("\nCategoria Niño Nacional Cantidad %.2f Extranjero Cantidad %.2f",Categorias[0][3],Categorias[0][4]);
printf("\nCategoria Adolescente Nacional Cantidad %.2f Extranjero Cantidad %.2f",Categorias[1][3],Categorias[1][4]);
printf("\nCategoria Joven Nacional Cantidad %.2f Extranjero Cantidad %.2f",Categorias[2][3],Categorias[2][4]);
printf("\nCategoria Adulto Nacional Cantidad %.2f Extranjero Cantidad %.2f",Categorias[3][3],Categorias[3][4]);
printf("\nCategoria Maduro Nacional Cantidad %.2f Extranjero Cantidad %.2f",Categorias[4][3],Categorias[4][4]);
printf("\nCategoria Mayor Nacional Cantidad %.2f Extranjero Cantidad %.2f",Categorias[5][3],Categorias[5][4]);
// promedio de edad general
printf("\nPromedio de edad general %.2f",promedioedadgeneral/totalpersonas);
printf("\nEdad Maxima %d",edadmaxima);
printf("\nEdad Minima %d",edadminima);
system("PAUSE");
return 0;
}