1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
-- 25/02/2012 -- Escribe un programa que pida una secuencia de enteros por teclado terminada en 0 (de longitud desconocida pero no superior a 1000), la almacene en un vector, ordene sus componentes de menor a mayor y muestre los datos ordenados por pantalla a continuación. with ada.text_io; with ada.integer_text_io; procedure ada7x11 is use ada.text_io; use ada.integer_text_io; type myVector is array(1..1000) of integer; -- Se crea un nuevo tipo de datos, en concreto un vector de enteros de 1000 componentes numerados del 1 al 1000 (sin 0). numeros:myVector; -- Se crea una variable de tipo myVector; i:integer := 1; temp:integer; -- PROCEDIMIENTO QUE ORDENA LOS COMPONENTES DE UN VECTOR: procedure ordenaVector( num: in out myVector; fin: in integer ) is -- Precondición: Se ha de recibir un vector de enteros como E/S. Y un entero que indica el número de componentes a ordenar, máximo 1000. -- Poscondición: Se ordenaran los componentes del vector mediante el método de la burbuja. temp:integer; begin for i in 1..fin-1 loop for j in 1..fin-1 loop if num(j) > num(j+1) then temp := num(j); num(j) := num(j+1); num(j+1) := temp; end if; end loop; end loop; end ordenaVector; begin put_line("Introduzca números enteros, separados por intro y termine con el número 0:"); new_line; -- Se guardan los números en el vector: get(temp); while i<1000 and temp/=0 loop numeros(i) := temp; get(temp); if temp/=0 then i := i+1; end if; end loop; -- Se ordena el vector de números: ordenaVector( numeros, i ); -- Se imprimen por pantalla los números ordenados: new_line; for index in 1..i loop put( numeros(index), width=>0 ); put(", "); end loop; end ada7x11; |