jueves, 31 de enero de 2008

Suma de dos vectores en lenguaje ADA

La suma de dos vectores (V1, V2) de igual tamaño, es un nuevo vector, V3, del mismo tamaño que V1 y V2, tal que, cada elemento de V3 es la suma de los que ocupan las posiciones correspondientes (primera, segunda, tercera,...; independientemente de los índices que designen dichas posiciones) de V1 y V2.

Implemente una función de tipo Vector_1, llamada Suma_Vectores, con dos parámetros de tipo Vector_1. El resultado será la suma de los dos parámetros de la función. Dado que dos vectores sólo se pueden sumar cuando tienen el mismo número de elementos, la función lanzará una excepción Constraint_Error con el mensaje "Vectores incompatibles" cuando el tamaño de los parámetros de entrada sea distinto. El rango del índice del resultado deberá empezar siempre en 1, independientemente de cuáles fueran los rangos de índices de los parámetros de la función.

with Arrays; use Arrays;
function Suma_Vectores (V1, V2 : Vector_1) return Vector_1 is
suma : Vector_1 (1 .. V1'Length);
begin
if V1'Length = V2'Length then
for I in 1 .. V1'Length loop
suma (I) := V1 (V1'First + I - 1) + V2 (V2'First + I - 1);
end loop;
else
raise Constraint_Error with "Vectores incompatibles";
end if;
return suma;
end Suma_Vectores;

package Arrays is
type Vector_1 is array (Integer range <>) of Integer;
type Vector_2 is array (Positive range <>) of Integer;
type Matriz_1 is array (Integer range <>, Integer range <>) of Integer;
end Arrays;

3 comentarios:

kfewa dijo...

Al ejercicio le faltan datos ya que queda incompleto y la nota es 5 no 10

kfewa dijo...

Al ejercicio le faltan datos ya que queda incompleto y la nota es 5 no 10

Wanderer dijo...

No le falta, no copies y pegues piensa un poco por ti mismo el porque del código... si estas en la ULPGC en tu actividad te pide que si no coinciden nos devuelva un array con el valor -1 en todos sus indices

Por lo que ese constrain error no entra en nuestra actividad.

Puedes usar un for que aumente del primer indice hasta el numero asignando un -1 al indice (i)