ADA - alguien me puede ayudar??

 
Vista:

alguien me puede ayudar??

Publicado por Amanda (1 intervención) el 27/04/2004 14:24:48
Tengo este algoritmo, que creo es Ada y tengo que llevarlo al lenguaje Pascal., pero hay sentencias que desconozco, como el discrete, new, wtih. Si alguien puede explicarmelas, lo agradezco o dónde puedo consultar dichas sentencias, ya que he bajado tutoriales y no las encuentro. Aquí va, gracias

1 function fibonacci_search(item: integer; arr: sort_array) return index
2 is
3 l : index := arr'first; -- first element of array
4 u : index := arr'last; -- last element of array
5 m : index := (u+l)/2;
6 x,a,b : integer;
7 begin
8 a := (Fn-3);
9 b := (Fn-2)-(Fn-3);
10 discrete (f2,f1) := (Fn-2,Fn-3)
11 new (f2,f1) := (f2-f1,2*f1-f2) | (a,b)
12 with i := u-l+1
13 new i=i/2 loop
14 loop
15 if item < arr(m) then
16 m := m-f1; -- compute new position of compared element
17 f2 := f2-f1;
18 f1 := f1-f2;
19 elsif item > arr(m) then
20 m := m+f1; -- compute new position of compared element
21 x := f1;
22 f1 := f2-f1;
23 f2 := x;
24 a := f2; b := f1;
25 else
26 return m; -- return index of found item
27 end if;
28 i := i/2;
29 end loop;
30 end fibonacci_search;

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

Traducción de algoritmo de Fibonacci Search a Pascal

Publicado por Alejandro (155 intervenciones) el 29/06/2023 23:10:44
La traducción del algoritmo en Ada a Pascal sería la siguiente:

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
function fibonacci_search(item: integer; var arr: sort_array): index;
var
    l, u, m, x, a, b, f1, f2, i: index;
begin
    l := arr.first; // first element of array
    u := arr.last; // last element of array
    m := (u + l) div 2;
    a := (Fn-3);
    b := (Fn-2) - (Fn-3);
    f2 := Fn-2;
    f1 := Fn-3;
    i := u - l + 1;
 
    while i > 0 do
    begin
        if item < arr[m] then
        begin
            m := m - f1; // compute new position of compared element
            x := f1;
            f1 := f2 - f1;
            f2 := x;
        end
        else if item > arr[m] then
        begin
            m := m + f1; // compute new position of compared element
            x := f1;
            f1 := f2 - f1;
            f2 := x;
        end
        else
        begin
            fibonacci_search := m; // return index of found item
            exit;
        end;
 
        i := i div 2;
    end;
 
    fibonacci_search := -1; // item not found
end;

Ahora, respecto a las sentencias que mencionas:

1. `discrete (f2,f1) := (Fn-2,Fn-3)`: Esta sentencia no es una construcción válida en Ada ni en Pascal. Parece ser una línea que se encuentra fuera de contexto en el código. Puede ser necesario revisar el algoritmo original para comprender su significado o corregirlo.

2. `new (f2,f1) := (f2-f1,2*f1-f2) | (a,b)`: Esta sentencia tampoco es una construcción válida en Ada ni en Pascal. Puede ser necesario revisar el algoritmo original.

En cuanto a las palabras clave `discrete`, `new` y `with` que mencionas, no son parte del lenguaje Pascal estándar. Puede haber alguna variante específica de Pascal que las utilice, pero en Pascal estándar no existen. Es posible que estas palabras clave se hayan utilizado en el algoritmo de Ada de manera específica para ese lenguaje.

Es recomendable revisar el algoritmo original y verificar si hay errores o si faltan fragmentos de código para comprender completamente su funcionamiento.

Recuerda que es importante consultar la documentación y los recursos adecuados para cada lenguaje con el fin de comprender las sentencias y las construcciones específicas.
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