Se tiene la producción total de toneladas de cereales (arroz, avena, cebada, trigo) cosechadas
durante cada mes del año anterior. Elaborar un programa que proporcione la siguiente información:
- El promedio anual de toneladas cosechadas.
- ¿Cuantos meses tuvieron una cosecha superior al promedio anual?
- ¿Cuantos meses tuvieron una cosecha inferior al promedio anual?
- ¿Cuál fue el mes en el que se produjeron mayor numero de toneladas?
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<windows.h>
using namespace std;
void ini_array(float []);
void leer(float [][4], char [][11], char [][7]);
void escribir(char [][11], float [], float &, int &, int &, int &);
float promedio_produccion(float [][4]);
void total_produccion_mes(float [][4], float []);
void meses_cosecha_sup_inf_prom(float [], float &, int &, int &);
int mes_produccion_alta(float []);
int main()
{
int cont_sup=0, cont_inf=0, pos_mes;
float produccion[12][4], produccion_mes[12], promedio_anual;
char meses[12][11]={"ENERO", "FEBRERO", "MARZO", "ABRIL", "MAYO", "JUNIO", "JULIO", "AGOSTO", "SEPTIEMBRE", "OCTUBRE", "NOVIEMBRE", "DICIEMBRE"};
char nombre_cosecha[4][7]={"ARROZ", "AVENA", "CEBADA", "TRIGO"};
ini_array(produccion_mes);
leer(produccion, meses, nombre_cosecha); //llama a la funcion leer()
promedio_anual=promedio_produccion(produccion); //llama a la funcion promedio_produccion()
total_produccion_mes(produccion, produccion_mes); //llama a la funcion total_produccion_mes()
meses_cosecha_sup_inf_prom(produccion_mes, promedio_anual, cont_sup, cont_inf); //llama a la funcion meses_cosecha_sup_inf_prom()
pos_mes=mes_produccion_alta(produccion_mes); //llama a la funcion mes_produccion_alta()
escribir(meses, produccion_mes, promedio_anual, cont_sup, cont_inf, pos_mes); //llama a la funcion escribir()
cin.get(); cin.get();
return 0;
}
void ini_array(float produccion_mes[12]) //inicializa la produccion total del mes en 0
{
int i;
for(i=0; i<12; i++)
{
produccion_mes[i]=0;
}
} //fin funcion ini_array()
void leer(float produccion[12][4], char meses[12][11], char nombre_cosecha[4][7])
{
int i, j;
for(i=0; i<12; i++)
{
cout<<endl<<"\t "<<"Produccion del mes de "<<meses[i]<<endl;
for(j=0; j<4; j++)
{
do{
cout<<endl<<"\t "<<" Indique produccion total de "<<nombre_cosecha[j]<<" del mes: ";
cin>>produccion[i][j];
if(produccion[i][j]<0)
{
cout<<endl<<"\t La produccion de total de "<<nombre_cosecha[j]<<" no puede ser menor que 0"<<endl;
Sleep(1500);
system("cls");
}
}while(produccion[i][j]<0); //valida que el total de la produccion del cereal no sea menor que 0
}
cout<<endl;
}
system("cls");
} //fin funcion leer()
void escribir(char meses[12][11], float produccion_mes[12], float &promedio_anual, int &cont_sup, int &cont_inf, int &pos_mes)
{
int i;
cout<<endl<<"\t Promedio anual de produccion: "<<promedio_anual<<" T"<<endl<<endl;
for(i=0; i<12; i++)
{
cout<<"\t Produccion total del mes de "<<meses[i]<<" : "<<produccion_mes[i]<<" T"<<endl;
}
cout<<endl<<"\t Cantidad de meses con cosecha superior al promedio anual: "<<cont_sup<<endl<<endl;
cout<<"\t Cantidad de meses con cosecha inferior al promedio anual: "<<cont_inf<<endl<<endl;
cout<<"\t Mes con la produccion mas alta: "<<meses[pos_mes]<<endl;
} //fin funcion escribir()
float promedio_produccion(float produccion[12][4]) //caldula el promedio de la produccion anual
{
int i, j;
float promedio_anual, sum=0;
for(i=0; i<12; i++)
{
for(j=0; j<4; j++)
{
sum+=produccion[i][j];
}
}
promedio_anual=(sum/12);
return promedio_anual;
} //fin funcion promedio_produccion()
void total_produccion_mes(float produccion[12][4], float produccion_mes[12]) //calcula la produccion total del mes
{
int i, j;
for(i=0; i<12; i++)
{
for(j=0; j<4; j++)
{
produccion_mes[i]+=produccion[i][j];
}
}
} //fin funcion total_produccion_mes()
void meses_cosecha_sup_inf_prom(float produccion_mes[12], float &promedio_anual, int &cont_sup, int &cont_inf) //cuenta la cantidad meses que tienen la produccion por encima o por debajo del promedio anual
{
int i;
for(i=0; i<12; i++)
{
if(produccion_mes[i]>promedio_anual)
{
cont_sup++;
}
else
{
cont_inf++;
}
}
} //fin funcion meses_cosecha_sup_inf_prom()
int mes_produccion_alta(float produccion_mes[12]) //determina cual es el mes con la produccion mas alta
{
int i=0, pos_mes;
float mayor=0;
for(i=0; i<12; i++)
{
if(produccion_mes[i]>mayor)
{
mayor=produccion_mes[i];
pos_mes=i;
}
}
return pos_mes;
}
Recuerdo un problema similar en la facultad, parece que tienen modelos similares en todos lados.
ResponderEliminar