[ Foro de Pascal ]
Buenas noches profesor Nacho Cabanes .
Quería preguntarte acerca de un ejercicio que se me ocurrió hacer esta noche de viernes como jobi y me encontré con algo que desconozco en parte y quería preguntarte como podría hacer para que parte de mi programa funcione, pues me sale un error y no se como solucionarlo , si puedes echarme una mano te lo agradeceria .
la cuestion es:
program LecturaVarTipo;
type
tDetalles=(detUno,detDos,detTres);
tReferencias=(refUno,refDos,refTres,refCuatro);
tAlmacen=record
pu:real;
c:integer;
end;
var
alm:tAlmacen;
det:tDetalles;
ref:tReferencias;
begin
for det:=detUno to detTres do
for ref:=refUno to refCuatro do
begin
writeln('digite el precio para : ' , det, ' y referencia:' , ref);
read(alm.pu);
...
bien en este punto exactamente en el writeln , me envía un mensaje de error en compilación que me dice que no se puede leer o escribir variables de este tipo, me gustaría por favor me explicaras que es lo que esta pasando y cual es la forma de solucionar mi intencion ?
una vez mas gracias por tu atencion , tu tiempo y tu excelente ayuda.
No se puede leer ni escribir en tipos de datos enumerados. Solo se puede asignar valores. Además, estás utilizando éstos valores como subíndices de un arreglo (cosa que está bien), pero a la vez quieres asignarle valores, eso sería más o menos como utilizar las variables "i" o "j" como subíndices de ciclos for y pretender usarlos para almacenar otro valores.
Yo creo que usted quiso almacenar los valores en una varible del tipo "tAmacen", pero se confundió.
hola anonimo, efectivamente he leido que no se pueden leer ni escribir en tipos de datos enumerados, pero no se si quiza a traves de alguna funcion se pudiera lograr y es la ayuda que me gustaria el profesor nacho me brindara.
respecto a lo que dices:"éstos valores como subíndices de un arreglo (cosa que está bien), pero a la vez quieres asignarle valores, eso sería más o menos como utilizar las variables "i" o "j" como subíndices de ciclos for y pretender usarlos para almacenar otro valores. "
bueno no es que quiera asignarles valores solo intento hacer una similitud ya que hablas de los indices i, j normales, lo siguiente:
cuando uno hace a veces:
for i:=1 to no do
write(' escriba el elemento ',i, ':');
readln(A[i]);
como ves utilizamos el indice para escribir en pantalla informacion al usuario, mas no para alterar el valor del indice, pues de igual forma es lo que intento hacer con :
begin
for det:=detUno to detTres do
for ref:=refUno to refCuatro do
begin
writeln('digite el precio para : ' , det, ' y referencia:' , ref);
read(alm.pu);
ojala puedan ayudarme , por que debe haber alguna forma de poderlo hacer, gracias anonimo y ojala el profesor nacho en su experiencia pueda ayudarme.gracias
Los tipos enumerados son buenos para hacer el programa más legible, pero no tanto para la interfaz con el usuario. Del usuario podrás leer textos y números. Si quieres hacer que eso equivalga a un tipo enumerado, generalmente tendrás que hacerlo de forma manual, con "if" o "case":
var
respuesta: string:
...
readLn(respuesta);
if respuesta = '1' then alm.pu := refUno
else ...
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)