• Sábado 21 de Diciembre de 2024, 11:25

Autor Tema:  Array  (Leído 1953 veces)

Luthiena

  • Nuevo Miembro
  • *
  • Mensajes: 2
  • Nacionalidad: es
    • Ver Perfil
Array
« en: Lunes 3 de Enero de 2011, 12:54 »
0
¡Hola!, se me ha presentado una duda con ADA ya que la tengo como asignatura y me está dando bastante lata. Este es el problema que se me ha planteado:

Desarrolle un procedimiento llamado Array_Caracteres, con tres parámetros, los dos primeros de tipo Vector_3
y el tercero de tipo Natural (Fuente, Busca, Cuentas). El procedimiento calculará el número de veces que
el segundo parámetro se encuentra en el primero.
Las apariciones de Busca pueden aparecer solapadas en Fuente.
Ejemplo:

Fuente = ('a','s','a','s','a','b','d','a','s','a')
Busca = ('a','s','a')
Cuentas = 3

El fichero arrays.ads contiene las declaraciones necesarias para el desarrollo de la función.
El código se escribirá en un fichero llamado array_caracteres.adb

Y esta es mi solución:

with arrays;
use arrays;
Procedure Array_Caracteres (Fuente, Busca: in Vector_3; Cuentas: in out Natural) is
flag: boolean := true;
n: natural := 0;
begin
   for i in Fuente'range Loop
   n := 0
      if (i+busca'length) < fuente'last then
   for j in Busca'range Loop
               if Fuente(i + n) = Busca(j) and flag = true then
                 flag := true;
              else
                 flag := false;
         end if;
            n := n + 1;
   end Loop;
      if flag = true then
         Cuentas := Cuentas + 1;
      end if;
   end if;
   end Loop;
end Array_Caracteres;

Estuve tres horas haciéndolo con la ayuda de un amigo, la universidad tiene un servidor en el que tenemos que hacer estas prácticas y nos las autoevalua. Sigo sin entender como es posible que me haya dado un 1 de un 10. No sé si es por el uso de las banderas porque aún no las he dado, pero siempre me da este error:
CONSTRAINT_ERROR with test_case_unit.adb:14 range check failed -> ()
PD: Con referencia al estilo, todo está correcto lo que aquí como que no se ve. Es decir, los if, else y end if están a su debida altura, etc.