Sei sulla pagina 1di 8

TRABAJO PRACTICO NRO 2

PROGRAMACIÓN ESTRUCTURADA

UNIVERSIDAD ABIERTA INTERAMERICANA


COMISIÓN: 1° J
TURNO NOCHE
2DO CUATRIMESTRE 2007
LUNES – AULA 364

ALUMNO:
// 3.- Una acopiadora de cereales tiene 10 silos donde almacena 4 tipos de cereal
// codigo de cereal descripcion valor
// 1 trigo 10
// 2 maiz 12
// 3 soja 06
// 4 cebada 11
// mensualmente se tiene los datos del cereal almacenado,
// -numero de silo
// -tipo de cereal
// -cantidad
// Se desea saber:
// a. total de kg almacenados de cada cereal
// b. total de kg almacenados de cada cereal en cada silo
// c. stock valorizado de cada silo
// d. nombre del cereal de mas almacenaje para cada silo
// e. de los silos cual o cuales recaudo mas
// f. cantidad de silos con mas de 20000 kg almacenados en total
// g. cantidad de silos con mas de 2000 kg almacenados para cada cereal
// h. porcentaje que representa lo valorizado por cada silo sobre el total
#include<stdio.h>
#include<conio.h>
#include<string.h>
//la constante S me permite cambiar facilmente la cantidad de Silos
//la constante C me permite cambiar facilmente la cantidad de Cereales
//la constante Z me permite definir cant max de caracteres para los cereales
#define C 4
#define S 10
#define Z 30
//prototipos
void inicializa(void);
void fin(void);
void operador(void);
void respuestaa(void);
void respuestab(void);
void respuestac(void);
void respuestad(void);
void respuestae(void);
void respuestaf(void);
void respuestag(void);
void respuestah(void);
void validarsilo(int*);
void validarcereal(int*);
//variables globales
char cereales[C][Z];
float aux=0,db[S][C]={0},valorcereales[C],auxmatriz[S]={0};
/*La matriz db sera la que almacene los datos que van a ser ingresador
por el operador del programa*/
int i,j;
//programa principal
void main(void)
{
inicializa();
operador();
respuestaa();
getch();
respuestab();
getch();
respuestac();
getch();
respuestad();
getch();
respuestae();
getch();
respuestaf();
getch();
respuestag();
getch();
respuestah();
fin();
}

/*Esta funcion me permite cargar los nombres de los cereales y su valor*/


void inicializa(void)
{
clrscr();
for(i=0;i<C;i++)
{
fflush(stdin);
printf("Ingrese el nombre del cereal nro %d: ",i+1);
gets(cereales[i]);
fflush(stdin);
printf("Ingrese el valor por Kg del cereal \"%s\": ",cereales[i]);
scanf("%f",&valorcereales[i]);
}
}

/*respuesta b: total de kg almacenados de cada cereal en cada silo*/


void respuestab(void)
{
clrscr();
printf("Respuesta B: Kg de cereal en cada silo\n");
for(i=0;i<S;i++)
{
printf("%5d|",i+1);
}
printf(" ==>Silo \n");
for(i=0;i<C;i++)
{
for(j=0;j<S;j++)
{
printf("%5.0f|",db[j][i]);
}
printf(" %s",cereales[i]);
printf("\n");
}
}
///funcion para realizar una pausa antes de finalizar el programa/////
void fin(void)
{
printf("\n\nHa finalizado la ejecucion del programa\n");
printf("Pulse cualquier tecla para salir");
getch();
}
/*Funcion para que el operador del programa realice la carga de datos*/
void operador(void)
{
int silo,cereal,cont=0;
float kg;
clrscr();
printf("\n\n\n\tEmpezara la carga de datos.\n\n\n\n");
printf("\tPresione una tecla para comenzar");
getch();
clrscr();
printf("\n");
printf("RECUERDE, PARA FINALIZAR CARGA DE DATOS,INGRESE NRO DE
SILO=0\n\n\n");
printf("Tarjeta de referencia rapida para el ingreso de cereales\n");
printf("------------------------------------------------------------\n");
printf(" Presionar | Para seleccionar\n");
printf("------------------------------------------------------------\n");
for(i=0;i<C;i++)
{
printf("\t%d\t|\t%s\n",i+1,cereales[i]);
printf("------------------------------------------------------------\n");
}
printf("Ingrese Nro de Silo: ");
scanf("%d",&silo);
validarsilo(&silo);
while(silo!=0)
{
printf("Ingrese cod de cereal: ");
scanf("%d",&cereal);
validarcereal(&cereal);
printf("Ingrese cantidad en Kg: ");
scanf("%f",&kg);
db[silo-1][cereal-1]+=kg;
cont=cont+1;
clrscr();
printf("Cantidad de datos ingresados: %d\n",cont);
printf("RECUERDE, PARA FINALIZAR CARGA DE DATOS,INGRESE NRO DE
SILO=0\n\n\n");
printf("Tarjeta de referencia rapida para el ingreso de cereales\n");
printf("------------------------------------------------------------\n");
printf(" Presionar | Para seleccionar\n");
printf("------------------------------------------------------------\n");
for(i=0;i<C;i++)
{
printf("\t%d\t|\t%s\n",i+1,cereales[i]);
printf("------------------------------------------------------------\n");
}
printf("Ingrese Nro de Silo: ");
scanf("%d",&silo);
validarsilo(&silo);
}
}
//funcion para validar silo
void validarsilo(int *x)
{
while(*x<0 || *x>S)
{
printf("El nro de silo ingresado no es valido\n");
printf("Debe ingresar un nro de silo entre 1 y %d\n",S);
printf("Ingrese Nro de Silo: ");
scanf("%d",x);
}
}
//funcion para validar cereal
void validarcereal(int *x)
{
while(*x<1 || *x>C)
{
printf("El cod de cereal ingresado no es valido\n");
printf("Debe ingresar un cod de cereal entre 1 y %d\n",C);
printf("Ingrese cod de cereal: ");
scanf("%d",x);
}
}
//respuesta c stock valorizado de cada silo
void respuestac(void)
{
clrscr();
printf("Respuesta C: Stock valorizado de cada silo\n");
for(i=0;i<S;i++)
{
aux=0;
for(j=0;j<C;j++)
{
aux=aux+((db[i][j])*(valorcereales[j]));
}
printf("Stock silo %d: %f pesos\n",i+1,aux);
}
}
//respuesta a total de kg almacenados de cada cereal
void respuestaa(void)
{
clrscr();
printf("Respuesta A: total de kg almacenados de cada cereal\n");
for(i=0;i<C;i++)
{
aux=0;
for(j=0;j<S;j++)
{
aux=aux+db[j][i];
}
printf("Total de Kg almacenados de %s: %f\n",cereales[i],aux);
}
}
//respuesta d nombre del cereal de mas almacenaje para cada silo
void respuestad(void)
{
clrscr();
printf("Respuesta D: nombre del cereal de mas almacenaje para cada silo\n");
for(i=0;i<S;i++)
{
aux=db[i][0];
for(j=0;j<C;j++)
{
if(aux<db[i][j]) aux=db[i][j];
}
printf("Cereal(es) de mas almacenaje para el silo nro %d:\n",i+1);
for(j=0;j<C;j++)
{
if((aux>0)&&(aux==db[i][j])) printf("%s\n",cereales[j]); /*
este if me muestra los cereales mas almacenados filtrando
cuando el silo no tiene ningun cereal almacenado*/
}
}
}
//respuesta e de los silos cual o cuales recaudaron mas
void respuestae(void)
{
clrscr();
printf("Respuesta E: Cual(es) silo(s) recaudo(recaudaron) mas\n");
for(i=0;i<S;i++)
{
for(j=0;j<C;j++)
{
auxmatriz[i]=auxmatriz[i]+((db[i][j])*(valorcereales[j]));
}
}
aux=auxmatriz[0];
for(i=0;i<S;i++)
{
if(aux<auxmatriz[i]) aux=auxmatriz[i];
}
for(i=0;i<S;i++)
{
if(aux==auxmatriz[i]) printf("Silo %d\n",i+1);
}
}
//respuesta f cantidad de silos con mas de 20000kg almacenados en total
void respuestaf(void)
{
int contador=0;
clrscr();
printf("Respuesta F: Cantidad de silos con mas de 20000kg almacenados en total\n");
for(i=0;i<S;i++)
{
auxmatriz[i]=0;
for(j=0;j<C;j++)
{
auxmatriz[i]=auxmatriz[i]+db[i][j];
}
}
for(i=0;i<S;i++)
{
if(auxmatriz[i]>20000) contador=contador+1;
}
printf("%d",contador);
}
//respuesta h porcentaje que representa lo valorizado por cada silo sobre el total
void respuestah(void)
{
float stocksilo[S]={0};
clrscr();
printf("Respuesta H: Porcentaje que representa lo valorizado por cada silo sobre el
total:\n");
aux=0;
for(i=0;i<S;i++)
{
for(j=0;j<C;j++)
{
stocksilo[i]=((stocksilo[i])+((db[i][j])*(valorcereales[j])));
}
}
for(i=0;i<S;i++)
{
aux=aux+stocksilo[i];
}
for(i=0;i<S;i++)
{
printf("Porcentaje del Silo %d: %f\n",i+1,((stocksilo[i]/aux)*100));
}
}
//respuesta g cant de silos con mas de 2000kg almacenados para cada cereal
void respuestag(void)
{
int cuentacer, cuentasilo=0;
clrscr();
printf("Respuesta G: Cantidad de silos con mas de 2000kg almac para cada cereal:\n");
for(i=0;i<S;i++)
{
cuentacer=0;
for(j=0;j<C;j++)
{
if(db[i][j]>2000) cuentacer=cuentacer+1;
}
if(cuentacer==C) cuentasilo=cuentasilo+1;
}
printf("%d",cuentasilo);
}

Potrebbero piacerti anche