PDA

Ver la versión completa : Probema con pseudocódigo



half
30-05-2012, 06:34
Hola a todos tengo este problema y no se solucionarlo, es sólo pseudocodigo y diagrama de flujo, sólo necesito ayuda para resolverlo, estudiarlo ya que comence hace poco a estudiar, 2 meses mas tarde que el resto de la clase, por lo que siento me cuesta ponerme al día...
He visto arreglos, numeros pares, amigos y primos, ciclos, etc, todo lo inicial. bueno el problema es el siguiente:

Un negocio tiene tres cajas registradoras (1, 2,3). Se registra el importe facturado por cada una. Al final del día se desea saber el total facturado por cada caja, el promedio de facturación de cada caja y el total general facturado. El final del proceso está dado por el ingreso de número de caja igual a cero.

Gracias


Edit: Por favor, no me malinterpreten, sólo necesito una guía de como arrancar porque no sé aquí por donde empezar, no estoy pidiendo que me hagan la tarea!!

Markitos1024
30-05-2012, 18:08
mira si viste arreglos, podes pensar que cada caja es un arreglo y cada factura es una posicion del arreglo, por lo que entendi al final "El final del proceso está dado por el ingreso de número de caja igual a cero." podriamos decir que la ultima posicion a leer es la que devuelva un 0. Te lo hago con el estilo de seudocodigo que posteaste en el otro post.




Inicio

/* no defino tipos porque vi que vos no los usas en c serian todos int*/

caja1[]
caja2[]
caja3[]
n
suma1
suma2
suma3
promedio1
promedio2
promedio3
sumatotal

/* Se deberian cargar las facturas antes de procesarlas*/

facturar(caja1,caja2,caja3)

n=0
suma1=0
mientras (caja1[n] <> 0) hacer
suma1= suma1 + caja1[n]
n = n + 1
fin mientras
si (n <> 0) entonces
/* Ojo con la division por 0*/
promedio1 = suma1 / n
sino /* vendria a ser un else sino puede ser un si (n > 0) o (n<0) por la ley de tricotomia*/
promedio1 = 0
fin si

n=0
suma2=0
mientras (caja2[n] <> 0) hacer
suma2= suma2 + caja2[n]
n = n + 1
fin mientras
si (n <> 0) entonces
promedio2 = suma2 / n
sino
promedio2 = 0
fin si

n=0
suma3=0
mientras (caja3[n] <> 0) hacer
suma3= suma3 + caja3[n]
n = n + 1
fin mientras
si (n <> 0) entonces
promedio3 = suma3 / n
sino
promedio3 = 0
fin si
sumatotal = suma1 + suma2 + suma3

Imprimir(suma1,suma2,suma3,promedio1,promedio2,pro medio3,sumatotal)

Fin


Ahora esta claro que este codigo es repetitivo y eso no esta bien, lo quedeberias hacer es modularizar y que haya un procedimiento que dado un arreglo te devuelva la suma y el promedio. Pero bueno no quiero adelantarme explicandote algo que aun no te dieron y complicarte. Ojala te sirva.

Lo del los promedios podrias evitarlo si los arreglos empiezan en 1 y no en 0, pero bueno normalmente empiezan en 0 y te muestro esa manera para que te sea mas didactico.

saludos

half
03-06-2012, 23:30
Muchísimas gracias!!! Yo al final lo había resuelto de esta manera pero le mande promedio de las tres cajas!!!





Inicio

Caj1, Caj2, Caj3
Promedio = 0
Mayor = 0
Leer (Caj1, Caj2, Caj3)

SumaC1 = SumaC1 + Caj1
SumaC2 = SumaC2 + Caj2
SumaC3 = SumaC3 + Caj3
Promedio = SumaC1 + SumaC2 + SumaC3/3

si (SumaC1>SumaC2) entonces
si (SumaC1>SumaC3) entonces
Mayor = SumaC1
si no
Mayor = SumaC3
fin si
si no
si (SumaC2>SumaC3) entonces
Mayor = SumaC2
si no
Mayor = SumaC3
fin si
fin si

imprimir (SumaC1, SumaC2, SumaC3, Mayor, Promedio)

fin




Sé que no está bien, pero quería que lo vieran para que se den una idea del razonamiento que tuve.

Ahora pregunto: Acá no sería mejor generar un ciclo para el promedio, determinando que el promedio es cero antes de que se comience a facturar?

EJ:


facturar(caja1,caja2,caja3)

n=0
suma1=0
promedio=0
mientras (caja1[n] <> 0) hacer
suma1= suma1 + caja1[n]
n = n + 1
fin mientras
mientras (n <> 0) hacer
promedio1 = suma1 / n
fin mientras

Markitos1024
04-06-2012, 23:06
Ahora pregunto: Acá no sería mejor generar un ciclo para el promedio, determinando que el promedio es cero antes de que se comience a facturar?

EJ:


facturar(caja1,caja2,caja3)

n=0
suma1=0
promedio=0
mientras (caja1[n] <> 0) hacer
suma1= suma1 + caja1[n]
n = n + 1
fin mientras
mientras (n <> 0) hacer
promedio1 = suma1 / n
fin mientras



Ese ciclo que marcas primeramente es infinito ya que n nunca cambia por enede si entra nunca saldra, Segundo ponele que corrijas eso solo sumarias n veces la suma que es un numero fijo por ende su promedio seria suma1. No la realidad es que con el primer ciclo sumas los valores de las operaciones del dia y como sabes cuantas operaciones son solo tenes que dividir para sacar el promedio.

saludos