Programación General > ADA
Mostrar Array
Itimag:
para visualizar un array de numeros, debes declarar num como un array de integers y usar el paquete ada.integer_text_io en vez del text_io.
--- Código: Text --- with Ada.Integer_Text_Io; use Ada.Integer_Text_Io; procedure visu_array is type numeros is array(1..10) of integer;num:constant numeros:=(0,1,2,3,4,5,6,7,8,9); -- Esto son numeros interpretados como integers. begin-- Para visualizarlos, haremos un simple for.For I in 1..10 loop put(num(I),2); -- El ( ,2) es para disminuir los espacios que deja en la visualización.end loop;end visu_array;
Debes diferenciar un número interpretado como carácter (va con comillas) o un numero interpretado como integer( va sin comillas).
Cuando pidas que te indroduzcan los numeros, debes obtener numeros en vez de caracteres. Si los obtienes como carácteres deberás hacer una función que te devuelva al programa principal ese carácter como integer. Esto lo puedes hacer con 1 array de caracteres; buscas de forma secuencial el carácter y una vez encontrado, retornas el índice del array, el cual corresponde con el carácter pero en numero.
Espero haberte servido de ayuda. Un saludo.
puertas:
Muy buenas, si hago lo que me comentas, me dice que num no está definido y la verdad que no entiendo la relacción entre num y el array que quiero mostrar, porque yo tengo un array de enteros, no de caracteres y no termino de entender, como paso de un array de enteros a un string, o como paso cada elemento del array, a caracter y la manera de mostrarlos con un put, sin tener que escribirlo 10 veces y escribirlo solo una vez, porque si en vez de un array de 10 números, tuviese un array de 10000 números, la cosa sería imposible.
lo que yo busco, es la manera de mostrar un array, osea los numeros enteros que forman el array.
Gracias por la molestia
Itimag:
Existen dos paquetes que incluyen el put para visualizar cosas:
El ada.text_io (el que creo que estas usando) y el ada.integer_text_io (el que debes usar). La principal diferencia entre estos 2 reside en que el primero se utiliza para visualizar en pantalla algún carácter mientras que el segundo se utiliza para visualizar algún numero.
Esto significa que para visualizar un array de numeros, no tienes porqué pasarlos a caracter y bastará un simple for para visualzar todo el array.
La estructura de un for (significa "para") es la siguiente:
--- Código: Text --- for I in 1..max loop instrucciones;end loop;
I es una variable (podemos darle la letra que queramos) que únicamente va a ser utilizable dentro del bucle que forma el for y esta iniciada por el valor 1 tal y como indica el rango [1..max]. La variable I se irá autoincrementntando de 1 en 1 hasta llegar al valor que indica la variable tipo integer llamada "max" o bien la podemos substituir por el valor que queramos. Ejemplo:
--- Código: Text ---for I in 1..100 loop
Bien, pasemos ahora a la estructura del array. Como debes saber un array es como una tabla en la que existen un numero determinado de posiciones libres para almacenar un carácter, numero, registro, etc. Veamos un ejemplo de un array definido como lo siguiente:
--- Código: Text ---type numeros is array(1..9) of integer;num: constant numeros:=(1,1,1,1,1,1,1,1,1);
Aquí una foto gráfica de esta estructura que acabamos de declarar:
http ://itimag.net/usr/Dibujo.GIF
(ver imagen adjunta o la de la url que he puesto de mala manera ya que no me deja poner imagenes :( :( .
El numero indicado abajo de la imagen indica la posición del array. Mientras que los 1 que hay dentro de la tabla es el contenido de la variable num declarada como variable de tipo numeros, el cual es un array de 1..9 de enteros.
Pues bien, ahora, para visualizar este array de numeros, debemos hacer un for que empezará por la posición uno hasta la 9. De esta forma recorreremos todo el array.
Ya sabemos como vamos a recorrer todas las posiciones del array, ahora nos queda visualizar el contenido de cada una de ellas. Esto significa que en cada iteración del bucle, haremos un put de lo que hay en la posición del array que nos esta indicando la variable I del for.
Por lo tanto, el bucle resultante nos queda así:
--- Código: Text ---for I in 1..9 loop put(num(I)); -- Para visualizarlo usamos el package ada.integer_text_ioend loop;
Ya, para acabar, el programa resultante es el siguiente:
--- Código: Text --- with Ada.Integer_Text_Io; use Ada.Integer_Text_Io; procedure visu_array is type numeros is array(1..9) of integer;num: constant numeros:=(1,1,1,1,1,1,1,1,1); beginFor I in 1..9 loop put(num(I));end loop;end visu_array;
Este programa dará como resultado 1 1 1 1 1 1 1 1 1.
Creo que con esta explicación te habrá quedado claro. Un saludo. :devil:
puertas:
y si tuvieras un arra de 1000 numeros, no creo que se haga asi, creo que hay que pasarlos a strings, con un INTEGER'VALUE, pero no se exactamente como se hace
Itimag:
puedes hacerlo de 1000 o incluso hasta el integer'last, que es el valor positivo más alto que permite utilizar ada.
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa