Pascal/Turbo Pascal - Rellenar un array en pascal

   
Vista:

Rellenar un array en pascal

Publicado por kezern (5 intervenciones) el 16/05/2009 20:42:40
Hola a todos.
Tengo declarado un array de enteros de 10 posiciones, pero el usuario puede meter 10 o menos enteros y no se como controlarlo. Yo había hecho algo así

type tabla=array[1..10] of integer;
var t:tabla;
i:integer;
begin

for i:=1 to 10 do
begin
read (t[i]);
end;

Lo que me ocurre es que hasta que no mete 10 números el bucle no termina.
¿Qué puedo hacer?
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:Rellenar un array en pascal

Publicado por Miguel (162 intervenciones) el 17/05/2009 05:43:57
Cambia de ciclo... el FOR se usa cuando sabes con exactitud cuantas veces vas a ciclar, o al menos ese es el concepto.
Un consejo alejate del FOR, adaptate al REPEAT o WHILE, que estos dos estan presente en casi todos los lenguajes de programación, no así el FOR.
Usá un WHILE y anda preguntado con una variable si desea ingresar otro numero, mientras con la variable de indice tambien vas controlando.
Es decir, supongamos que "opc" es la variable que utilizas para preguntar (CHAR por ejemplo) e "i" es la variable que usas como indice para el arreglo, entonces.

opc='S';
i:=1;
WHILE (opc='S')AND(i<=10) DO
BEGIN
readln(t[i]);
IF i<=10
THEN BEGIN
WRITE('Desea insertar otro elemento? S/N: ');
opc:=UpCase(READKEY);
END;
i:=i+1;
END;

Espero que te sirva!!!
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:Rellenar un array en pascal

Publicado por Tomas (1 intervención) el 30/05/2011 20:16:58
Miguel estas completamente equivocado en cuanto a lo que decis sobre el FOR
vos podes declarar una variable para que al usuario se le pida la cantidad de valores que va a ingresar ,entonces el FOR va a repetirse N veces "for i:=1 to n do"(n es la variable declarada antes leida de teclado), obviamente contemplando que si el usuario ingresa un valor que exede el limite el programa le indique dicho exeso . Saludos espero que haya servido .
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:Rellenar un array en pascal

Publicado por ramon (2072 intervenciones) el 30/05/2011 22:37:59
{A ver si esto aclara tus duras de entradas en no la totalidad del array}

program entrada;
uses
crt;

var
datos : array[1..10] of integer;
x, y, i, h : integer;
tec : char;
salir : boolean;

function numeros : integer; {Entrada numerica si error de entrada}
var {de otro caracter que no sea numero}
numero : string[5]; {retorna un numero integer}
n, r : integer; {y corta entradas con tecla ESC}
begin
i := 1;
fillchar(numero,6,' ');
numero[0] := chr(5);
repeat
tec := readkey;
if tec in[#48..#57] then
begin
numero[i] := tec;
numero[0] := chr(i);
gotoxy(x,y);write(numero);
i := i + 1;
if i > 5 then
begin
i := 5;
gotoxy(3,20);write('MAXIMO 5 NUMEROS....');
delay(1000);
gotoxy(3,20); ClrEol;
end;
if tec = #8 then
begin
i := i - 1;
if i < 1 then
i := 1;
numero[i] := ' ';
numero[0] := chr(i);
gotoxy(x,y);write(numero);
end;
end;
until (tec = #13) or (tec = #27);
if (tec = #13) and (i > 1) then
begin
val(numero,n,r);
numeros := n;
gotoxy(x,y);ClrEol;
end;
if tec = #27 then
begin
salir := true;
end;
end;


begin
clrscr;
y := 3;
x := 2;
h := 1;
salir := false;
repeat
gotoxy(x,y);write(numeros);
h := h + 1;
y := y + 1;
until (h > 10) or (salir = true);
end.

{espero te ayude}
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