viernes, 2 de octubre de 2015

Una Pila en C#

Lejos de usar el objeto predefinido <STACK> de C#, aquí presento la codificación de clase de una Pila en base al algoritmos del libro de Estructura de Datos de Cairo.


class Pila{ 
 //------------atributos de la pila 
 public String PILA; 
 public int TOPE; 
 public bool BANDERA; 
 public int MAX; 
 //-------------------------------- 
     public Pila(){ } 
       public void Pila(int max){ 
         this.MAX = max;
        this.TOPE = 0; 
        this.BANDERA = false; 
       }//fin constructor 
        

     public void Pila_vacia( ){ 
        if(this.TOPE == 0) 
           this.BANDERA = true; 
        else 
          this.BANDERA = false; 
      }//fin pila vacia 

     private void Pila_Llena( ){ 
        if(this.TOPE == this.MAX) 
           this.BANDERA = true; 
         else 
              this.BANDERA = false; 
      } //fin de pila llena 

      public void Pone(char dato){ 
           this.Pila_Llena(); 
              if(this.BANDERA) 
                  Console.WriteLine("Desbordamiento de Pila-Pila llena!"); 
              else{ 
                 this.PILA[this.TOPE] = dato;
                   this.TOPE++;//5 
                  } 
       }//fin de Pone 

     public void Quita(int dato){ 
          this.Pila_vacia(); 
             if(this.BANDERA) 
                Console.Writeline("Subdesbordamiento-Pila Vacía"); 
             else{ 
                  dato = this.PILA[TOPE]; 
                  this.TOPE--; 
                 }
      }//fin de quita 
 }//fin de la clase

Carrera 6K Tec Lerdo 2015


Producto Cruz de dos matrices de 2 X 2 en C#

Ejercicio interesante de programación de matrices en C#, es el producto cruz. En este ejemplo se considera, de manera directa solo el producto de dos matrices de 2 X 2 definidas dentro del código. El objetivo de este ejercicio es desarrollar la habilidad de programación de matrices en el lenguaje.


public void Main() { 
int[,] A = new int[2,2]{{1,2},{3,4}}; 
int[,] B = new int[2,2]{{3,2},{1,2}}; 
int[,] C = new int[2,2]; 
      for(int i = 0; i < 2; i++) { 
          for(int j = 0; j < 2; j++) { 
              if(i == 0 && j == 0){ 
                 C[i,j] = A[i,j]*B[i,j]+A[i,j+1]*B[i+1,j]; 
                  C[i,j+1] = A[i,j]*B[i,j+1]+A[i,j+1]*B[i+1,j+1];
                   break; 
               }else{ 
                    C[i,j] = A[i,j]*B[i-1,j]+A[i,j+1]*B[i,j]; 
                    C[i,j+1] = A[i,j]*B[i-1,j+1]+A[i,j+1]*B[i,j+1]; 
                      break; } 
               }  


 Console.Write(C[0,0]); 
 Console.Write(C[0,1]); 
 Console.WriteLine(C[1,0]); 
 Console.Write(C[1,1]); 
}

Les recomiendo un compilador online en caso de no tener instalado el IDE de C#: http://volatileread.com/UtilityLibrary/SnippetCompiler