• Lunes 16 de Diciembre de 2019, 12:22

Autor Tema:  Mostrar Array  (Leído 5390 veces)

puertas

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Mostrar Array
« en: Jueves 14 de Febrero de 2008, 14:41 »
0
Buenas tardes,

no voy a decir que estoy empezando en esto, porque sería insultar a su inteligencia, en seguida ustedes se daran cuenta de que soy un novato, cosa que probablemente sea el resto de mi vida, pero dejando presentaciones al margen, me gustaría saber el modo en el cual se puede mostrar en pantalla un array de numeros, si es que se puede, osea que me devuelva el array en un string, con sus comas o guiones o espacios.

no se si me he explicado bien, pero espero que alguien lea el mensajey se moleste en intentar entenderme, le estaré agradecido hasta que se me olvide. Muchas gracias

Itimag

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: Mostrar Array
« Respuesta #1 en: Jueves 14 de Febrero de 2008, 20:16 »
0
Es muy sencillo.

Imagina que tienes el siguiente programa:


with Ada.Text_Io; use Ada.Text_Io;

procedure visu_array is

type numeros is array(1..10) of character;
num:constant numeros:=("0123456789"); -- Esto son numeros interpretados como caracteres.

begin
-- Para visualizarlos, haremos un simple for.
For I in 1..10 loop
   put(num(I));
end loop;
end visu_array;


Esto es todo. Tambien podríamos declarar estos numeros como un string y realizar el for para visualizarlos
Num: constant String:="0123456789";


Espero haberte servido de ayuda. Un saludo. Si tienes más dudas, no dudes en preguntar.

gandalfelgris

  • Miembro activo
  • **
  • Mensajes: 53
    • Ver Perfil
Re: Mostrar Array
« Respuesta #2 en: Jueves 14 de Febrero de 2008, 21:29 »
0
Solo una pequeña puntualizacion a mi compañero Itimag

Creo que donde dice num:constant numeros:=("0123456789"); deberia decir
num:constant numeros:=("0", "1", "2", "3", "4", "5", "6", "7", "8", "9");

Un saludo
gandalfelgris

Itimag

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: Mostrar Array
« Respuesta #3 en: Jueves 14 de Febrero de 2008, 21:42 »
0
significa lo mismo. Como lo he puesto yo es mas corto.

puertas

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Mostrar Array
« Respuesta #4 en: Viernes 15 de Febrero de 2008, 13:22 »
0
Pero si declaro num, como una variable del tipo números y luego le digo que type num, me da un error, diciendome que se esperaba una variable del tipo string, con lo que estamos en las mismas, no me mostrara el array de numeros naturales, que yo tengo. Concretamente este array lo relleno con unos numeros que pido y que el objetivo de la primera parte del programa es ordenar los números de mayor a menor


muchas gracias, aunque aun no he conseguido el objetivo final, estoy aprendiendo la lógica de la programación, que es algo que me viene muy bien

Itimag

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: Mostrar Array
« Respuesta #5 en: Viernes 15 de Febrero de 2008, 14:00 »
0
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
  1.  
  2. with Ada.Integer_Text_Io; use Ada.Integer_Text_Io;
  3.  
  4. procedure visu_array is
  5.  
  6. type numeros is array(1..10) of integer;
  7. num:constant numeros:=(0,1,2,3,4,5,6,7,8,9); -- Esto son numeros interpretados como integers.
  8.  
  9. begin
  10. -- Para visualizarlos, haremos un simple for.
  11. For I in 1..10 loop
  12.    put(num(I),2); -- El ( ,2) es para disminuir los espacios que deja en la visualización.
  13. end loop;
  14. end visu_array;
  15.  
  16.  


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

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Mostrar Array
« Respuesta #6 en: Lunes 18 de Febrero de 2008, 09:19 »
0
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

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: Mostrar Array
« Respuesta #7 en: Lunes 18 de Febrero de 2008, 13:47 »
0
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
  1.  
  2. for I in 1..max loop
  3.    instrucciones;
  4. end loop;
  5.  
  6.  

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
  1. for I in 1..100 loop
  2.  


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
  1. type numeros is array(1..9) of integer;
  2. num: constant numeros:=(1,1,1,1,1,1,1,1,1);
  3.  
  4.  

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
  1. for I in 1..9 loop
  2.    put(num(I)); -- Para visualizarlo usamos el package ada.integer_text_io
  3. end loop;
  4.  
  5.  

Ya, para acabar, el programa resultante es el siguiente:
Código: Text
  1.  
  2. with Ada.Integer_Text_Io; use Ada.Integer_Text_Io;
  3.  
  4. procedure visu_array is
  5.  
  6. type numeros is array(1..9) of integer;
  7. num: constant numeros:=(1,1,1,1,1,1,1,1,1);
  8.  
  9. begin
  10. For I in 1..9 loop
  11.   put(num(I));
  12. end loop;
  13. end visu_array;
  14.  
  15.  

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:
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

puertas

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Mostrar Array
« Respuesta #8 en: Miércoles 20 de Febrero de 2008, 14:27 »
0
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

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: Mostrar Array
« Respuesta #9 en: Miércoles 20 de Febrero de 2008, 22:20 »
0
puedes hacerlo de 1000 o incluso hasta el integer'last, que es el valor positivo más alto que permite utilizar ada.

puertas

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Mostrar Array
« Respuesta #10 en: Viernes 22 de Febrero de 2008, 12:01 »
0
la forma correcta es la siguiente,  lo pongo por si hay algún lechón como yo que lo quiera saber

El modo de mostrar un array esn el siguiente:

for N in NUM_RANGO'RANGE loop

TEXT_IO:PUT  (NATURAL'IMAGE(NUM(N))

end loop;

gracias por la ayuda


NUM_RANGO'RANGE = es el rango con el cual definimos el array