daily pastebin goal
54%
SHARE
TWEET

Algoritmo - Challenge 12

a guest Jun 21st, 2011 685 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
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top