Matrices C++: Tabla de Código Binario usando Matrices

 


#include <iostream>

#include<math.h>

#define n 1000  //Definimos el tamaño de la matriz

using namespace std;


 void llenarMatriz(int fil, int col);  //Procedimiento para llenar la matriz

 void mostrarMatriz(int fil, int col); //Procedimiento para mostrar la matriz

 void decimal(int fil, int col);       //Procedimineto para pasar de binario a decimal


int main(int argc, const char * argv[]) {

    

    int col,fil;   //col = #columnas Matriz, fil = #filas Matriz

    cout<<" Ingrese el Número de Columnas: "//Pedir el numero de columnas que desee el usuario

    cin>>col;

    fil = pow(2,col);   //Calcular el numero de filas de la matriz

    llenarMatriz(fil,col);

    mostrarMatriz(fil,col);

    decimal(fil,col);

    

}

  void llenarMatriz(int fil,int col){

    int unoCero = 0 , temp = col, inicio = 0, aux, nVeces;

    int mat[n][n]; //Matriz Binaria

    

    for(int j = 0; j <= col - 1  ; j++){   //Pasar por cada columna

        unoCero=0;

        inicio = 0;

        aux=pow(2,temp-1);

        nVeces = (pow(2,col) / pow(2,temp-1) );   // Veces que se repite los 0s o 1s en cada columna

        for (int k = 1; k <= nVeces  ; k++){

            for(int i = inicio; i<= inicio + aux -1 ; i++){   //Recorres cada fila

               mat[i][j]=unoCero;

            }

            if(unoCero==0){  //Cambiar unoCero, si esta con 0 con 1

                unoCero=1;

                inicio = inicio + aux;   //Calcular el valor nuevo de inicio

                

            }else//Cambiar unoCero, si esta con 1 con 0

                unoCero=0;

                inicio = inicio + aux; //Calcular el valor nuevo de inicio

            }

        }

        temp = temp - 1//Reduciendo el numero de columna, cada vez que se pasa a una columna

    }

}


   void mostrarMatriz(int fil,int col){

    int mat[n][n]; //Matriz Binaria

    cout<<" Su matriz es: "<<endl;

    for (int i = 0; i< fil;i++){

          for(int j = 0; j < col ; j++){

              printf(" %d ", mat[i][j]);  //Mostrar la matriz binaria

          }

          printf (" \n");

    }

}

    void decimal(int fil,int col){

    int mat[n][n];  //Matriz Binaria

    int exp, decimal;

    cout<<" Cada fila de su Matriz en Decimal es: "<<endl;

       

    for (int i = 0 ; i< fil ; i++){

        exp = col - 1;   //Calcular el exponente de la base 2, el cual va a ir reduciendose cada vez que se pase a una columna, recorriendo la fila

        decimal = 0;

        for(int j = 0; j < col  ; j++){

            decimal = decimal + (pow(2,exp) * mat[i][j]); //Multiplicar cada elemento por la base 2 y el exponente calculado e ir sumando los elementos

            exp = exp - 1; //Reducimos

        }

        cout<<" La Fila "<< i + 1 << " es igual a "<< decimal <<endl; //Mostrar en decimal, cada fila de la matriz

    }

}


Publicar un comentario

0 Comentarios