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