1
« en: Viernes 5 de Enero de 2007, 17:27 »
Estoy haciendo un programa que registre modelos de resistencias, un máximo de 100.
Mi problema es que quando quiero vaciar el almacen y borrar todas las resistencias registradas no lo hace, para ello uso un procedure. Utilizo el delphi 6 y programo en pascal estoy un poco verde porque me acabo de meter en este mundillo.
Tambien me gustaria saber como definir el numero de decimales que quiero que tenga un 'real'.
Por otra parte me gustaria poder añadir una acción en forma de funcion(por ejemplo BOOLEAN) que mire la estructura y diga si un codigo ya existe. Escribir una acción en forma de procedure para añadir los datos de una nueva resistencia a la estructura (verificar a su vez si el codigo aun no existe).
Escribir una acción en forma de procedure para visualizar el contenido de la estructura.
Lo que me gustaria es saber si me lo podeis explicar de una forma simple porque en los apuntes que tengo me explica muy poco de procedimientos y lo que explica no lo entiendo.
Llevo dias provando formas de hacer las cosas, aprendiendo de los errores que me da el programa al compilar pero voy a paso de tortuga y un poco a ciegas.
Porfavor cualquier respuesta que me podais dar me sera de gran ayuda, seguro
Muchas gracias.
Hos escribo el programa
program programa;
{$APPTYPE CONSOLE}
uses
SysUtils;
const
max=100;
type
T_Contador=1..max;
T_Ficha=RECORD
Codigo:STRING[5];
Valor:INTEGER;
Tolerancia:INTEGER;
Potencia:REAL;
Existencias:INTEGER;
Precio_Unidad:REAL;
Ubicacion:STRING[8];
end;
T_Almacen=RECORD
T_Stock:ARRAY [T_Contador] OF T_Ficha;
N_Resistencias:INTEGER;
end;
procedure Vaciar_Almacen (Ficha:T_Almacen);
var
respuesta:CHAR;
N_Resistencias:INTEGER;
begin
while (respuesta<>'s')and(respuesta<>'n') do
begin
writeln('Realmente desea eliminar la informacion sobre el contenido del almacen? (S/N)');
readln(respuesta);
if respuesta='s' then
begin
Ficha.N_Resistencias:=0;
writeln('Ha eliminado toda la informacion respecto al contenido del almacen');
end;
if respuesta='n' then
writeln('No se ha eliminado la informacion respecto al contenido del almacen');
if (respuesta<>'s')and(respuesta<>'n') then
writeln('Introduzca una respuesta valida S/N');
end;
writeln;
writeln('Presione intro para volver al Menu');
readln;
end;
procedure Introducir_Resistencia (var Ficha:T_Almacen);
begin
Ficha.N_Resistencias:=Ficha.N_Resistencias+1;
writeln('Se dispone a introducir los datos de la RESISTENCIA numero ',Ficha.N_Resistencias);
writeln('Introduzca el CODIGO de la resistencia');
readln(Ficha.T_Stock[Ficha.N_Resistencias].Codigo);
writeln('Introduzca el VALOR de la resistencia (OHMS)');
readln(Ficha.T_Stock[Ficha.N_Resistencias].Valor);
writeln('Introduzca la TOLERANCIA de la resistencia (%)');
while
((Ficha.T_Stock[Ficha.N_Resistencias].Tolerancia)<>1)AND
((Ficha.T_Stock[Ficha.N_Resistencias].Tolerancia)<>2)AND
((Ficha.T_Stock[Ficha.N_Resistencias].Tolerancia)<>5)AND
((Ficha.T_Stock[Ficha.N_Resistencias].Tolerancia)<>10) do
begin
readln(Ficha.T_Stock[Ficha.N_Resistencias].Tolerancia);
if
((Ficha.T_Stock[Ficha.N_Resistencias].Tolerancia)<>1)AND
((Ficha.T_Stock[Ficha.N_Resistencias].Tolerancia)<>2)AND
((Ficha.T_Stock[Ficha.N_Resistencias].Tolerancia)<>5)AND
((Ficha.T_Stock[Ficha.N_Resistencias].Tolerancia)<>10) then
writeln('ERROR, Introduzca un valor correcto: 1,2,5,10')
end;
writeln('Introduzca la POTENCIA de la resistencia (WATTS)');
readln(Ficha.T_Stock[Ficha.N_Resistencias].Potencia);
writeln('Introduzca las EXISTENCIAS de la resistencia');
readln(Ficha.T_Stock[Ficha.N_Resistencias].Existencias);
writeln('Introduzca el PRECIO por UNIDAD de la resistencia (EUROS)');
readln(Ficha.T_Stock[Ficha.N_Resistencias].Precio_Unidad);
writeln('Introduzca la UBICACION de la resistencia (elija estante: del 1 al 8)');
readln(Ficha.T_Stock[Ficha.N_Resistencias].Ubicacion);
writeln('RESISTENCIA numero ',Ficha.N_Resistencias);
writeln('CODIGO: ',Ficha.T_Stock[Ficha.N_Resistencias].Codigo);
writeln('VALOR: ',Ficha.T_Stock[Ficha.N_Resistencias].Valor,' OHMS');
writeln('TOLERANCIA: ',Ficha.T_Stock[Ficha.N_Resistencias].Tolerancia,'%');
writeln('POTENCIA: ',Ficha.T_Stock[Ficha.N_Resistencias].Potencia,' WATTS');
writeln('EXISTENCIAS: ',Ficha.T_Stock[Ficha.N_Resistencias].Existencias,' Unidades');
writeln('PRECIO por UNIDAD: ',Ficha.T_Stock[Ficha.N_Resistencias].Precio_Unidad,' EUROS');
writeln('UBICACION: Estante ',Ficha.T_Stock[Ficha.N_Resistencias].Ubicacion);
writeln;
writeln('Presione intro para volver al Menu');
readln;
end;
var
Opcion:INTEGER;
N:T_Almacen;
N_Resistencias:INTEGER;
begin
Opcion:=-1;
while (Opcion<>0) do
begin
writeln('Menu, Que desea hacer?');
writeln('Opcion 1: Vaciar el almacen');
writeln('Opcion 2: Insertar una resistencia');
writeln('Opcion 3: (por definir)');
writeln('Opcion 0: Salir');
readln(Opcion);
case Opcion of
1 :begin
writeln('Ha elegido Vaciar el almacen');
Vaciar_Almacen(N)
end;
2 :begin
writeln('Ha elegido Insertar una resistencia');
Introducir_Resistencia(N)
end;
3 :writeln('Ha elegido la opcion 3');
0 :writeln('Gracias por actualizar su Stock de resistencias, ADIOS');
else
writeln('ERROR, Introduzca una opcion valida: 1,2,3,0')
end;
end;
readln;
end.