Pascal/Turbo Pascal - Algo falla

   
Vista:

Algo falla

Publicado por Ignacio (12 intervenciones) el 30/12/2007 14:08:48
Buenos días. He construido el siguiente programa:

Program Almacen;

Uses
CRT;

Type
TpProducto=Record
Identificador:string;
Precio:real;
NumCaj:integer;
End
TpAlmacen=Record
Almacen:array[1..25]of TpProducto;
n:integer;
End;

{Con este procedimiento calculamos una letra aleatoria}
Procedure LetraAleatoria(Var let:string);
Var
i:integer;
Begin
let:='';
Randomize;
For i:=1 to 2 do
let:=let+chr(random(5)+65);
writeln(let);
End;

{Con este procedimiento calculamos un precio aleatorio}
Procedure PrecioAleatorio(Var num:real);
Var
ent,dec:integer;
Begin
Randomize;
ent:=random(3000);
dec:=random(100);
num:=ent+(dec / 100);
writeln(num:7:2);
End;

{Con este procedimiento lo que hago es mostrar los datos que tengo guardados en el vector}
Procedure Mostrar(Var I:TpAlmacen);
Var
k:integer;
Begin
writeln('Mostrar datos')
writeln;
For k:=1 to I.n do
Begin
writeln(I.Almacen[k].Identificador);
writeln(I.Almacen[k].Precio);
End;
End;

{Algoritmo principal}
Var
Caj:integer;
letra:string;
numero:real;
j:integer;
invt:TpAlmacen;
Begin
writeln('Escribe un numero: ');
readln(Caj);
For j:=1 to Caj do
Begin
writeln('El identificador es: ');
LetraAleatoria(letra);
writeln('El precio es: ');
PrecioAleatorio(numero);
End;
Mostrar(invt);
End.

Lo que quiero es que se me guarden los datos en el vector y que luego al llamar al procedimiento Mostrar pues me muestre los datos guardados. Para empezar cuando llamo a LetraAleatoria y a PrecioAleatorio se me repite todo el rato el mismo dato según hemos definido el limite del bucle for.
Haber si me podeis ayudar.
Muchas gracias.
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:Algo falla

Publicado por Ignacio (12 intervenciones) el 02/01/2008 14:07:01
Muchisimas gracias por contestarme majos
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:Algo falla

Publicado por Mariano (57 intervenciones) el 02/01/2008 17:52:16
Hola Ignacio, el problema que no se muestra es que nunk guardas nada en el vector :S
siempre emitis directo en pantalla los numeros de precio y las cadenas que generas :S

Supuestamente que queres q haga el programa?

Un abrazo!

Mariano
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:Algo falla

Publicado por Ignacio (12 intervenciones) el 02/01/2008 17:56:59
Si lo que quiero es guardar datos en el vector, pero es que lo he intentado un monton de veces y ando atascado porque efectivamente me lo muestra por pantalla como dices tu pero no se me guarda nada
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:Algo falla

Publicado por Mariano (57 intervenciones) el 02/01/2008 18:30:45
Bueno, te arreglo el programa para que te quede como vos qures: igual una recomendacion, lo que usas como procedimientos, te conviene usarlo como funciones, xq en realidad los parametros q reciben, son los que en realidad devuele el procedimiento, asi q seria una funcion encubierta :P
pero no importa, eos no cambia operativamente:
El programa para que haga lo q vos qures seria asi:
Lo unico que tenes q hacer es cambiar el bloque prinicipal (no revise los modulos de generar los numeros y bloques aleatorios, ni el mostrar, doy por hecho que deben estar bien), SOLAMENTE EN TODOS LOS PROCEDIMIENTOS SACA LA UTLIMA LINEA DE WRITELN , ES DECIR NO MUESTRE POR PANTALLA LOS VALORES QUE GENERA CADA PROCEDIMIENTO

begin {bloque prinicipal}
writeln('Escribe un numero: ');
readln(Caj); {aca deberias validar el dato para q sea menor que el tamaño maximo del vector}
For j:=1 to Caj do Begin
LetraAleatoria(letra);
v[J].identificadore:=letra;
PrecioAleatorio(numero);
v[j].precio:=numero;
end;
Mostrar(v);
readln;
end.

Cualquier duda volve a preguntar!
Un abrazo

Mariano
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