Pascal/Turbo Pascal - Problema con un array

 
Vista:

Problema con un array

Publicado por Kezern (5 intervenciones) el 10/05/2009 13:33:01
Hola a todos. Tengo un problema con un programa en pascal.
He declarado un array de la siguiente forma:
type tabla=array [1..100] of char;
var t:tabla;
Pretendo ir metiendo letras de una palabra de la siguiente forma:
writeln('Introduce la palabra');
for i:=1 to n do
begin
read (t[i]);
end;
La idea es que en cada vuelta del bucle se meta una letra en una nueva posición del array. El problema que tengo es que por algún motivo, me empieza a meter las letras en la posición 3 del array y no entiendo porqué.
¿Alguna idea?
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:Problema con un array

Publicado por Miguel (159 intervenciones) el 10/05/2009 19:33:04
Y cuanto vale el n que pusiste en el FOR??
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:Problema con un array

Publicado por kezern (5 intervenciones) el 10/05/2009 21:24:16
Ese n vale siempre 8
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:Problema con un array

Publicado por Martin (74 intervenciones) el 10/05/2009 21:54:57
Hola. Kezem

La palabra o frase que introduzcas hay que leerla, por lo tanto hay que declarar una variable STRING:
WRITE('Introduce la palabra: ');
Readln(Palabra); {ahora la misma variable de control "i" nos valdrá para ir insertando o asignando cada caracter de la frase a la posicion correspondiente
del ARRAY:
De esta manera, al ejecutar el programa, te presentaria en pantalla todos los numeros hata el valor de "N".
FOR i := 1 to N DO
begin
t[i] := Palabra[i];
write(i,'=',t[i].-)
end

Para que solo te presente la cantidad de numeros correspondiente al numero de caracteres de la frase cambiarías a
FOR i := 1 to length(Palabra) do

Espero solucione tu problema.
Un saludo: Martín
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:Problema con un array

Publicado por Miguel (159 intervenciones) el 10/05/2009 22:34:51
Lo que dice Martin esta bien, pero si quieres optimizarlo no hace falta utilizar una variable adicional de tipo STRING. Por lo que veo tu querias ingresar letra por letra, bueno aqui dejo un codigo que permite ingresar la palabra de esa forma (y sin que tengas que ingresar una letra y dar "enter"), respete el resto, es decir la longitud como maxima debe ser 8, aunque yo no utilizaria un FOR para este ejercicio, con un WHILE o REPEAT seria mas indicado, ya que si uno quiere ingresar una palabra de mayor longitud o de menos caracteres no puede con este ejemplo, y para adaptar este FOR habria que hacer muchos reemplazos, dejar de usar cte, etc...

PROGRAM prueba;
USES CRT;
CONST
N = 8;
type tabla=array [1..100] of char;
var t:tabla;
i : INTEGER;
BEGIN
writeln('Introduce la palabra');
for i:=1 to N do
begin
t[i]:=READKEY;
WRITE(t[i]);
end;
WRITELN();
{simplemente para mostrar los datos el array}
for i:=1 to N do
begin
WRITE(t[i]);
end;
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:Problema con un array

Publicado por kezern (5 intervenciones) el 10/05/2009 22:50:43
Muchas gracias a los dos, la verdad es que para lo que necesito con el tema del string ya está resuelto perfectamente.
Muchas gracias de nuevo
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