Recursividad Lenguaje Ada

Páginas: 5 (1007 palabras) Publicado: 3 de diciembre de 2012
RECURSIVIDAD

A continuación se presenta una forma de resolver determinantes de orden n utilizando una técnica recursiva. Esta forma de resolver determinantes puede ser prohibitiva para ordenes altos ya que el tiempo de ejecución aumenta exponencialmente con el orden de la matriz (

Especificación del programa DETER.ADB
with TEXT_IO;

Procedure DETER is
package FLT_IO is newTEXT_IO.FLOAT_IO( FLOAT );
type MATRIZ is array (integer range ,integer range) of FLOAT;

function MENOR (M: MATRIZ; X,Y: INTEGER) return MATRIZ is

N : MATRIZ(M'FIRST..M'LAST-1,M'FIRST(1)..M'LAST(1)-1);
FIL,COL : INTEGER;
begin
FIL:=1;
COL:=1;
for COLUMNA in M'RANGEloop
if COLUMNA /= Y then
for FILA in M'RANGE(1)
loop
if FILA /= X then
N(FIL,COL):=M(FILA,COLUMNA);
FIL:=FIL+1;
end if;end loop;
FIL:=1;
COL:=COL+1;
end if;
end loop;
return N;
end MENOR;
function DETERMINANTE (M: MATRIZ) return FLOAT is
SOLUCION :FLOAT:=0.0;
PARCIAL :FLOAT:=0.0;
beginif M'length > 2 then
for COLUMNA in M'RANGE
loop
PARCIAL:=M(COLUMNA,1)*FLOAT(((-1)**(COLUMNA+1)))*
DETERMINANTE(MENOR(M,COLUMNA,1));
SOLUCION:=SOLUCION+PARCIAL;
end loop;
elseSOLUCION:=(M(1,1)*M(2,2))-(M(1,2)*M(2,1));
end if;
return SOLUCION;

end DETERMINANTE;



procedure PUT (M: MATRIZ ) is
begin
for COLUMNA in M'range(1) loop
for FILA in M'range
loop
TEXT_IO.PUT(" ");FLT_IO.PUT(M(FILA,COLUMNA));
TEXT_IO.PUT(" ");
end loop;
TEXT_IO.NEW_LINE;
end loop;
end PUT;

MIMATRI6:MATRIZ (1..6,1..6):=(1=>(2.0,2.0,1.0,0.0,2.0,1.0),
2=>(1.0,2.0,6.0,5.0,3.0,7.0),
3=>(2.0,3.0,4.0,2.0,2.0,1.0),4=>(2.0,6.0,6.0,9.0,3.0,7.0),
5=>(1.0,2.0,7.0,5.0,3.0,7.0),
6=>(2.0,7.0,7.0,1.0,2.0,1.0));


MIMATRI7:MATRIZ (1..7,1..7):=(1=>(2.0,2.0,1.0,5.0,0.0,2.0,1.0),
2=>(1.0,2.0,6.0,2.0,5.0,3.0,7.0),
3=>(2.0,3.0,4.0,7.0,2.0,2.0,1.0),4=>(2.0,6.0,6.0,3.0,9.0,3.0,7.0),
5=>(1.0,2.0,7.0,1.0,5.0,3.0,7.0),
6=>(2.0,7.0,7.0,6.0,1.0,2.0,1.0),
7=>(1.0,2.0,6.0,2.0,5.0,2.0,1.0));

MIMATRI8:MATRIZ (1..8,1..8):=(1=>(2.0,2.0,2.0,1.0,5.0,0.0,2.0,1.0),
2=>(9.0,1.0,2.0,6.0,2.0,5.0,3.0,7.0),3=>(8.0,2.0,3.0,4.0,7.0,2.0,2.0,1.0),
4=>(7.0,2.0,6.0,6.0,3.0,9.0,3.0,7.0),
5=>(6.0,1.0,2.0,7.0,1.0,5.0,3.0,7.0),
6=>(5.0,2.0,7.0,7.0,6.0,1.0,2.0,1.0),
7=>(4.0,1.0,2.0,6.0,2.0,5.0,2.0,1.0),
8=>(3.0,2.0,3.0,4.0,7.0,2.0,3.0,7.0));...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Lenguaje ada
  • Lenguaje En C, Recursividad
  • Recursos del lenguaje escrito
  • Adaed
  • ADAE
  • ---Ada
  • De ada
  • adae

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS