Pascal/Turbo Pascal - necesiro borrar un dato de un registro con arreglo

 
Vista:

necesiro borrar un dato de un registro con arreglo

Publicado por david (1 intervención) el 03/07/2006 01:32:17
hola amigos. tengo el problema estoy haciendo un programa de un control de bodega, utilizo un registro y dentro de el tego arreglos. el problema se me presento cuando al momento de elegir el elemento a eleminar por ejemplo: ingreso el articulo "harina" y me pregunta cuantas harinas ingreso y coloco 5, luego en otra opcion me dice que desea eliminar, de hay empiesa el problema. necesito que me busque harina yluego pregunte cuanto de deseo eliminar y al ingresar un numero por ejemplo 3 luego al montrarme el total de cosas me diga que me quedan 2 harinas en inventario.

les adjnto el codigo y espero me puedan ayudar. es en pascal

program Bodega;
uses
crt;
const
max=100;
type
item=record
articulo:string;
precio:real;
cantidad:integer;
pasillo:string;
end;
datos=array [1..max] of item;
var
inventario:datos;
opc,cantidad,c:integer;
res:string[1];


function titulo(titulo:string):integer;
begin
gotoxy(Trunc((80/2)-(length(titulo)/2)),1);Write(titulo);
end;

begin

cantidad:=1;
repeat
ClrScr;

titulo('Control de Bodega "Los Begin End"');
writeln;
writeln;

Writeln(' 1.-Agregar Producto');
Writeln(' 2.-Quitar Porducto');
Writeln(' 3.-Productos en bodega');
Writeln(' 4.-Salir');

writeln;

Write(' -> Opcion: ');Readln(opc);
case opc of
1:
begin
for cantidad:=cantidad to max do
begin
ClrScr;
titulo('Agregar productos');
writeln;
writeln;
write(' -Producto ',cantidad,': ');
readln(inventario[cantidad].articulo);
write(' -Precio: ');
readln(inventario[cantidad].precio);
write(' -Cantidad: ');
readln(inventario[cantidad].cantidad);
write(' -Lugar de Almacenaje: ');
readln(inventario[cantidad].Pasillo);
writeln;
Write('¿Desea introducir otro producto? s/n: ');
Readln(res);

if (res='n') OR (res='N') then break;

end;
end;
2: {Falta agregar las acciones para esta función}
begin
ClrScr;
titulo('Quitar Productos');
writeln;
writeln;
for cantidad:=cantidad to max do
begin
writeln('Que producto desea eliminar');
{Falta agregar las acciondes para esta funcion}

writeln('Cuantos productos desea eliminar');
{Falta agregar las acciondes para esta funcion}

Write('¿Desea elimonar otro producto? s/n: ');
Readln(res);

if (res='n') OR (res='N') then break;

end;
end;

3:
begin
ClrScr;
titulo('productos en Bodega');
writeln;
writeln;
for c:=1 to cantidad do
begin
writeln(' Producto',c,': ',inventario[c].articulo);
writeln(' Precio: $',inventario[c].precio:0:2);
writeln(' Cantidad: ',inventario[c].cantidad);
writeln(' Lugar de Almacenaje: ',inventario[c].Pasillo);
writeln;
end;
ReadKey;
end;

end;
until opc=4;
begin
Write('¿Esta seguro que desea salir del programa? s/n: ');
Readln(res);
if (res='n') OR (res='N') then exit;
end;
end.
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:necesiro borrar un dato de un registro con arre

Publicado por Leandro (5 intervenciones) el 06/07/2006 00:42:00
Buenas, lo que deberias de hacer es un bucle WHILE o REPEAT UNTIL
buscando en el array de registros el registro harina,
eso lo haces con una busqueda lineal, en donde primero controlas que no estas en una posicion mayor a la ultima del array y despues controlando el nombre del registro en que estas si es harina o no
una vez que lo encontrastes, si insertas una harina nueva, le sumas 1 a cantidad
si eliminas k harinas, debes de verificar que k <= cantidad y si se cumple a cantidad le restas k.

Nose si tu duda es en "como" escribir el codigo o en la logica, si es en como escribirlo responde que te contesto nuevamente.
Espero haberte ayudado en algo.
Saludos,
Leandro.
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