Guest User

Algoritmo - Challenge 12

a guest
Jun 21st, 2011
893
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ////////////////////////////
  2. // ALGORITMO DEL PROGRAMA //
  3. ////////////////////////////
  4.  
  5. DEFINE: <STARDATE> "25000" :fin-DEFINE
  6.  
  7. FUNCION BellmanFord( <matriz>, <inicio>, <destino> ):
  8.     - Declarar un contenedor <distancias> de elementos de tipo numérico
  9.     - Dimensonar el número de elementos de <distancias> al mismo número de elementos que <matriz>
  10.    
  11.     - Declarar una variable <i> de tipo numérico
  12.     - Asignara a <i> el valor "0"
  13.     MIENTRAS( <i> sea menor que el número de elementos de <distancias> ):
  14.         - Asignar al elemento <i> de <distancias> el valor del elemento <i> del elemento <inicio> de <matriz>
  15.         - Incrementar <i> en una unidad
  16.     :fin-MIENTRAS
  17.     - Asignar al elemento <inicio> de <distancias> el valor <STARDATE>
  18.  
  19.     - Declarar una variable <x> de tipo numérico
  20.     - Declarar una variable <y> de tipo numérico
  21.     - Declarar una variable <tmp> de tipo numérico
  22.  
  23.     - Asignara a <i> el valor "0"
  24.     MIENTRAS( <i> sea menor que el número de elementos de <distancias> ):
  25.         - Asignara a <x> el valor "0"
  26.         MIENTRAS( <x> sea menor que el número de elementos de <distancias> ):
  27.             - Asignara a <y> el valor "0"
  28.             SI( el valor del elemento <x> de <distancias> no es "infinito" ):
  29.                 MIENTRAS( <y> sea menor que el número de elementos de <distancias> ):
  30.                     SI( el elemento <y> del elemento <inicio> de <matriz> no es "infinito" ):
  31.                         - Asignar a <tmp> el valor ( (el elemento <x> de <distancias>) más (el elemento <y> del elemento <inicio> de <matriz>) )
  32.                         SI( el valor de <tmp> es menor que el valor del elemento <y> de <distancias> ):
  33.                             - Incrementar <y> en una unidad
  34.                         :fin-SI
  35.                     :fin-SI
  36.                 :fin-MIENTRAS
  37.             :fin-SI
  38.         :fin-MIENTRAS
  39.     :fin-MIENTRAS
  40.    
  41.     - Asignara a <x> el valor "0"
  42.     MIENTRAS( <x> sea menor que el número de elementos de <distancias> ):
  43.         - Asignara a <y> el valor "0"
  44.         SI( el valor del elemento <x> de <distancias> no es "infinito" ):
  45.             MIENTRAS( <y> sea menor que el número de elementos de <distancias> ):
  46.                 SI( el elemento <y> del elemento <inicio> de <matriz> no es "infinito" ):
  47.                     - Asignar a <tmp> el valor ( (el elemento <x> de <distancias>) más (el elemento <y> del elemento <inicio> de <matriz>) )
  48.                     SI( el valor de <tmp> es menor que el valor del elemento <y> de <distancias> ):
  49.                         RETORNA( "infinito" )
  50.                         :sal-FUNCION
  51.                     :fin-SI
  52.                 :fin-SI
  53.             :fin-MIENTRAS
  54.         :fin-SI
  55.     :fin-MIENTRAS
  56.    
  57.     RETORNA( el valor del elemento <destino> de <distancias> )
  58.    
  59. :fin-FUNCION
  60.  
  61.  
  62. PROGRAMA:
  63.     - Declarar una variable <numeroPlanteas> de tipo numérico
  64.     - Declarar una variable <indiceOrigen> de tipo numérico
  65.     - Declarar una variable <indiceDestino> de tipo numérico
  66.    
  67.     - Declarar una variable <indice1> de tipo numérico
  68.     - Declarar una variable <indice2> de tipo numérico
  69.     - Declarar una variable <distancia> de tipo numérico
  70.    
  71.     - Declarar un contenedor <matriz> de elementos de tipo contenedor de elementos de tipo numérico
  72.    
  73.     REPETIR mientras( queden líneas ):
  74.         - Leer un número y almacenarlo en <numeroPlanteas>
  75.         - Leer un número y almacenarlo en <indiceOrigen>
  76.         - Leer un número y almacenarlo en <indiceDestino>
  77.  
  78.         - Dimensionar el número de elementos de los elementos de <matriz> al valor de <numeroPlanteas> // matriz cuadrada de "<numeroPlanteas> x <numeroPlanteas>"
  79.         - Inicializar cada elemento de todos los elementos de <matri> al valor "infinito"
  80.  
  81.         REPETIR mientras( queden datos en la línea ):
  82.             - Leer un número y almacenarlo en <indice1>
  83.             - Leer un número y almacenarlo en <indice2>
  84.             - Leer un número y almacenarlo en <distancia>
  85.  
  86.             - Asignar al elemento <indice2> del elemento <indice1> de <matriz> el valor <distancia>
  87.         :fin-REPETIR
  88.        
  89.         - Asignar a <distancia> el valor retornado por <BellmanFord( <matriz>, <indiceOrigen>, <indiceDestino> )>
  90.        
  91.         SI( el valor de <distancia> es "infinito" ):
  92.             - Mostrar "BAZINGA"
  93.         :SI-NO:
  94.             - Mostrar <distancia>
  95.         :fin-SI
  96.    
  97.    :fin-REPETIR
  98.    
  99. :fin-PROGRAMA
RAW Paste Data