Algoritmia - algoritmo

 
Vista:

algoritmo

Publicado por renny (2 intervenciones) el 26/07/2007 23:42:14
hola serian tan hamable de ayudarme en este programa:

Diseñe un algoritmo que permita leer los movimientos de los productos de una empresa: Código del producto, cantidad de cajas.
la informacion viene clasificada por codigo del producto. ademas la primera entrada de un producto. en el campo cantidad de cajas reflejara el inventario inicial del producto. el resto de las entradas de dicho producto indicaran la venta o compra de cajas dependiendo del signo que tenga el campo cantidad de cajas.
la salida que se requiere es:
por producto: codigo, inventario inicial, total ventas, total compras, inventario final y numero de movimientos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:algoritmo

Publicado por klaytor (22 intervenciones) el 27/07/2007 10:11:01
Hola!

Yo creo que podríamos dividir este algoritmo en dos tareas:

1. Actualizar los campos de cada producto según se vayan realizando compras o ventas (movimientos).
2. Visualizar el resultado final.

Para ello puedes definir dos procedures.

PROCEDURE 1: REGISTRA_MOVIMIENTOS(producto, cantidad_cajas, lista_productos);

Deberá actualizar los campos; compras, ventas, num_movimientos e inventario_final. Buscando previamente el producto indicado como parámetro en la lista (supongo que los productos están almacenados en una lista).

PROCERURE 2: VISUALIZA_RESULTADO(lista_productos);

Simplemente recorre la lista e imprime la información de cada nodo (producto) por pantalla.

*Si declaras lista_productos como una variable global ya no necesitarías pasarla como parámetro en los procedures.

Espero haberte ayudado.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:algoritmo

Publicado por renny (2 intervenciones) el 28/07/2007 22:23:36
mire yo lo estoy haciendo asi pero tengo unos problema si me puedes ayudar responde

program productos;
uses
crt;
var
codigo,inveini,CCajas,CCajasCo,CCajasVe,Cantfinal,Cantfi,I,N:integer;
Resp1,Resp:char;
begin
repeat
Clrscr;
writeln('ingrese la cantidad de productos a procesar:');
Readln(N);
Writeln('ingrese la catidad de cajas en el inventario inicial:');
Readln(CCajas);
inveini:=CCajas;
Cantfi:=0;
repeat
writeln('ingrese el codigo del producto a procesar:');
Readln(codigo);
Writeln('ingrese la cantidad de cajas a comprar:');
Readln(CCajasCo);
Writeln('ingrese la cantidad de cajas a vender:');
Readln(CCajasVe);
Cantfinal:=(Cantfi+CCajas+CCajasCo)-CCajasVe;
Cantfi:=Cantfinal;
Writeln('desea procesar mas codigos de productos(S/N):');
Readln(Resp1);
until(Resp1='N')or(Resp1='n');
writeln('el inventario inicial es:',inveini);
writeln('el codigo del producto vendido es:',codigo);
writeln('la cantidad de cajas en el inventario final es:',Cantfinal);
writeln('el total de las ventas es:',CCajasVe,'productos');
writeln('el total de la compras es:',CCajasCo,'productos');
inveini:=Cantfi;
CCajas:=Cantfinal;
writeln(' ');
writeln('desea procesar mas productos(S/N):');
Readln(Resp);
until(Resp='N')or(Resp='n');
Writeln('el numero de movimientos para procesar productos es:',N);
Readkey;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:algoritmo

Publicado por klaytor (22 intervenciones) el 29/07/2007 15:18:51
Hola. He estado revisando tu programa y efectivamente no hace lo que debería. Vamos a ver, lo que tendrías que hacer es guardar información de estado de cada uno de los productos, me explico. A medida que se van introduciendo nuevos productos y realizando compras y ventas sobre ellos debes guardar los resultados "intermedios" en alguna variable, aparte de visualizarlos como ya haces ahora.

Si sabes manejar listas puedes crear una donde cada nodo guarde todas las variables de interes;

***inventario_inicial, compras, ventas, inventario_final, codigo_producto***

Sino siempre puedes hacer un ARRAY de RECORDs. Lo que está claro es que tienes que guardar la información sobre los productos en alguna variable sino normal que no te funcione.

Respetando la estructura de tu programa yo haría algo así:

VAR movimientos: INTEGER; //Inicializar a cero

REPEAT
___WRITELN("Introduzca producto:");
___READLN(producto);

___IF (producto_nuevo == TRUE)
___BEGIN
______ WRITELN("Introduzca inventario inicial");
______READLN(inventario_nicial);
______AÑADE_NUEVO_PRODUCTO(producto); //OJO. Inicializa los campos aqui
___END;

___REPEAT
______WRITELN("Introduzca producto a procesar:");
______READLN(producto);
______Pide_informacion_necesaria();
______ACTUALIZA_PRODUCTO(producto,compras,ventas); //Haces las cuentas necesarias y las guardas en la variable RECORD del producto
______INC(movimientos);
___UNTIL ...

___VISUALIZA_PRODUCTOS(); //Recorres la lista, o el ARRAY de RECORDs y sacando por pantalla al mismo tiempo la informacion que nos piden.

UNTIL....

REPEAT UNTIL KEYPRESSED;

END.

No sé muy bien qué consideras un movimiento. Tal y como lo he hecho yo, se considera un movimiento cuando se realiza compras y ventas sobre UN producto.

Espero que te sirva de ayuda. Si tienes alguna duda, posteala.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:algoritmo

Publicado por klaytor (22 intervenciones) el 29/07/2007 15:21:09
Perdón, a esta función habría que pasarle un segundo parámetro:

AÑADE_NUEVO_PRODUCTO(producto, inventario_inicial);

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar