Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: pyxolo en 2 Septiembre 2011, 18:46 pm



Título: Duda pascal array unidimensional
Publicado por: pyxolo en 2 Septiembre 2011, 18:46 pm
Código
  1. program vec1;
  2.  
  3. uses crt;
  4.  
  5. var
  6.        i, k, promedio: integer;
  7.        resul: real;
  8.        matriz : array[1..[size=15pt]k[/size]] of integer;
  9. BEGIN
  10.  clrscr;
  11.  writeln('Tu promedio.');
  12.  writeln();
  13.  writeln('Cuantas asignaturas tienes?'); readln(k);
  14.  promedio := 0;
  15.  
  16.  for i:=1 to k do
  17.  
  18.    begin
  19.    write('Nota ', i, ': '); readln(matriz[i]);
  20.    promedio := promedio + matriz[i];
  21.    end;//for
  22.  
  23.  clrscr;
  24.  resul := promedio / k;
  25.  write('Su promedio es de: ');
  26.  write(resul:0:2);
  27.  readkey;
  28. END.
  29.  

El problema que me surge es cuando declaro el array... me gustaría establecer el índice final a través del usuario...

¿Alguna ayudita?


Título: Re: Duda pascal array unidimensional
Publicado por: Valkyr en 2 Septiembre 2011, 20:23 pm
En Pascal, si no me equivoco, no se puede establecer el tamaño dependiendo de una variable que el usuario inserte. (Que me corrijan si me equivoco).

Una posible solución sería declararte una constante con el número máximo de elementos del array, leer el tamaño que inserte el usuario, sí es superior muestras mensaje por pantalla diciendo que no es posible, sí es menor que la constante entonces haces las operaciones pertinentes.

Saludos.


Título: Re: Duda pascal array unidimensional
Publicado por: Khronos14 en 2 Septiembre 2011, 23:43 pm
En Pascal, si no me equivoco, no se puede establecer el tamaño dependiendo de una variable que el usuario inserte. (Que me corrijan si me equivoco).

Pues sí que se puede. Tienes que declarar tu array de esta manera:

Código
  1. var
  2. matriz: array of integer;

Y para establecer el tamaño del array tienes que utilizar la función SetLength.

Código
  1. SetLength(matriz, 4);

De esta manera, matriz tendría 4 elementos. Usando SetLength siempre empieza en 0 el array. Puedes conocer donde empieza y donde acaba un array utilizando Low() y High().

Saludos.


Título: Re: Duda pascal array unidimensional
Publicado por: Valkyr en 3 Septiembre 2011, 02:18 am
Pues sí que se puede.

Gracias por la corrección, no tenía ni idea de que sí que se podía.

Saludos.