#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
}
}
0 Comentarios