ADA - ITIS

 
Vista:

ITIS

Publicado por Kevin (1 intervención) el 28/11/2008 10:58:14
Hola, vamos a ver, tengo que hacer un programa y no tengo ni idea, me piden que cree una funcion INDEX que trabaje como con las ristras pero con los Arrays, alguien sabria como hacerlo? ayudenme porfavor:

Implemente una función de tipo Integer, llamada Array_Index, con dos parámetros de tipo Vector_2 (Fuente, Patron). Se debe buscar si el Patrón (el vector completo) está contenido en la Fuente. La función devolverá el índice de la primera aparición del Patrón en la Fuente. Si el Patrón no está contenido en la Fuente la función devolverá un cero.

Ejemplo con vectores de tipo entero:

Fuente: (10..15) ==> (108, 34, 65, 1234, 4, 8)
Patrón: (5..6) ==> (65, 1234)
Resultado: 12;

eso es exactamente lo k m pide muchas gracias.
un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Implementación de función Array_Index para buscar un patrón en una fuente

Publicado por Alejandro (155 intervenciones) el 30/06/2023 23:12:36
Para implementar la función `Array_Index` en Ada que busca un patrón en una fuente representada por vectores, puedes seguir este enfoque:

1. Define un tipo de vector utilizando el tipo `Array` en Ada. Puedes usar un tipo específico para los elementos del vector, como `Integer` en el ejemplo que mencionaste.

1
type Vector_2 is array (Integer range <>) of Integer;

2. Implementa la función `Array_Index` que toma dos parámetros de tipo `Vector_2` (Fuente y Patrón) y devuelve un valor de tipo `Integer`.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function Array_Index(Fuente, Patron: Vector_2) return Integer is
   Index: Integer := 0;
begin
   -- Recorre la fuente para buscar el patrón
   for I in Fuente'Range' loop
      if Fuente(I) = Patron(Patron'First') then
         -- Si se encuentra el primer elemento del patrón, verifica si el resto coincide
         Index := I;
         for J in Patron'Range' loop
            exit when (I + J > Fuente'Last) or else Fuente(I + J) /= Patron(J);
            if J = Patron'Last then
               -- Se encontró el patrón completo en la fuente
               return Index;
            end if;
         end loop;
      end if;
   end loop;
   -- No se encontró el patrón en la fuente
   return 0;
end Array_Index;

3. Puedes llamar a la función `Array_Index` en tu programa principal, pasando los vectores de fuente y patrón como argumentos y obtener el índice de la primera aparición del patrón en la fuente.

1
2
3
4
5
6
7
8
9
10
procedure Main is
   Fuente: Vector_2 := (10..15 => (108, 34, 65, 1234, 4, 8));
   Patron: Vector_2 := (5..6 => (65, 1234));
   Resultado: Integer;
begin
   Resultado := Array_Index(Fuente, Patron);
   -- Imprimir el resultado
   Put("El índice de la primera aparición del patrón en la fuente es: ");
   Put(Resultado, 0);
end Main;

Este código buscará el patrón en la fuente y devolverá el índice de la primera aparición del patrón en la fuente. Si el patrón no se encuentra en la fuente, devolverá 0.

Recuerda que puedes ajustar el código según tus necesidades y el tipo de elementos que deseas trabajar en tus vectores.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar