Páginas

NIMADRES

Mostrando entradas con la etiqueta Girar. Mostrar todas las entradas
Mostrando entradas con la etiqueta Girar. Mostrar todas las entradas

Girar Una Matriz De Tres dimensiones [Cubo de Rukbi] En C++

/*
 * Programador: Julio Cesar Hernandez Hernandez
 * Materia: Divercion
 * Fecha: 30/06/2011 Escuela: ITSDZapopan
 * Carrera: Ing. En Sistemas Computacionales
 * Descripcion: Recreacion de los Giros en el
 *              Cubo de Rubik en 3 Dimensiones
 */


#include <cstdlib>
#include <iostream>
#include <iomanip>

using namespace std;

int cubo[3][3][3];
int mtem[3][3][3];
int t;

void guarda();

void imprime_cubo();

void menu();

void gira_frente_izquierda();
void gira_frente_derecha();
void gira_izquierda_arriba();
void gira_izquierda_abajo();
void gira_derecha_arriba();
void gira_derecha_abajo();
void gira_arriba_izquierda();
void gira_arriba_derecha();
void gira_abajo_izquierda();
void gira_abajo_derecha();
void gira_fondo_izquierda();
void gira_fondo_derecha();

int main(){
    int i = 1;
    for(int f = 0; f < 3; f++){
        for(int l = 0; l < 3; l++){
            for(int a = 0; a < 3; a++){
                cubo[f][l][a] = i;
                mtem[f][l][a] = i;
                i++;
            }

        }
    }

    menu();
    return EXIT_SUCCESS;
}

void guarda(){
    for(int f = 0; f < 3; f++){
        for(int l = 0; l < 3; l++){
            for(int a = 0; a < 3; a++){
                cubo[f][l][a] = mtem[f][l][a];
            }
        }
    }
}

void imprime_cubo(){
    for(int f = 0; f < 3; f++){
        for(int l = 0; l < 3; l++){
            for(int a = 0; a < 3; a++){
                cout<<setw(4)<<cubo[f][l][a];
            }
            cout<<endl;
        }
        cout<<endl;
    }
}

void menu(){
    int opc = 0;
    while(opc != 14){
        system("cls");
        cout << "Cubo de 3 dimenciones (:Selecciona una opcion) :"<<endl
        << " 1) Mostrar Cubo"<<endl
        << " 2) Girar Frente Izquierda"<<endl
        << " 3) Girar Frente Derecha"<<endl
        << " 4) Girar Fondo Izquierda"<<endl
        << " 5) Girar Fondo Derecha"<<endl
        << " 6) Girar Izquierda Arriba"<<endl
        << " 7) Girar Izquierda Abajo"<<endl
        << " 8) Girar Derecha Arriba"<<endl
        << " 9) Girar Derecha Abajo"<<endl
        << " 10) Girar Arriba Izquierda"<<endl
        << " 11) Girar Arriba Derecha"<<endl
        << " 12) Girar Abajo Izquierda"<<endl
        << " 13) Girar Abajo Derecha"<<endl
        << " 14) Salir"<<endl;
        cin>>opc;
        switch(opc){
            case 1:
                imprime_cubo();
                system("Pause>nul");
                break;
            case 2:
                gira_frente_izquierda();
                break;
            case 3:
                gira_frente_derecha();
                break;
            case 4:
                gira_fondo_izquierda();
                break;
            case 5:
                gira_fondo_derecha();
                break;
            case 6:
                gira_izquierda_arriba();
                break;
            case 7:
                gira_izquierda_abajo();
                break;
            case 8:
                gira_derecha_arriba();
                break;
            case 9:
                gira_derecha_abajo();
                break;
            case 10:
                gira_arriba_izquierda();
                break;
            case 11:
                gira_arriba_derecha();
                break;
            case 12:
                gira_abajo_izquierda();
                break;
            case 13:
                gira_abajo_derecha();
                break;
            case 14:
                cout<<"Programa Hecho Por Julio Cesar Hernandez Hernandez";
                break;
            default:
                cout<<"Error de seleccion";
                system("Pause>nul");
                break;
        }
    }
}

void gira_frente_izquierda(){
    t = 0;
    for(int y = 2; y >= 0; --y){
        for(int x = 0; x < 3; x++){
            mtem[0][t][x] = cubo[0][x][y];
        }
        t++;
    }
    guarda();
}

void gira_frente_derecha(){
    t = 0;
    for(int y = 2; y >= 0; --y){
        for(int x = 0; x < 3; x++){
            mtem[0][x][t] = cubo[0][y][x];
        }
        t++;
    }
    guarda();
}

void gira_izquierda_arriba(){
    t = 0;
    for(int y = 2; y >= 0; --y){
        for(int x = 0; x < 3; x++){
            mtem[0][t][x] = cubo[0][x][y];
        }
        t++;
    }
    guarda();
}

void gira_izquierda_abajo(){
    t = 0;
    for(int y = 2; y >= 0; --y){
        for(int x = 0; x < 3; x++){
            mtem[x][t][0] = cubo[y][x][0];
        }
        t++;
    }
    guarda();
}

void gira_derecha_arriba(){
    t = 0;
    for(int y = 2; y >= 0; --y){
        for(int x = 0; x < 3; x++){
            mtem[t][x][2] = cubo[x][y][2];
        }
        t++;
    }
    guarda();
}

void gira_derecha_abajo(){
    t = 0;
    for(int y = 2; y >= 0; --y){
        for(int x = 0; x < 3; x++){
            mtem[x][t][2] = cubo[y][x][2];
        }
        t++;
    }
    guarda();
}

void gira_arriba_izquierda(){
    t = 0;
    for(int y = 2; y >= 0; --y){
        for(int x = 0; x < 3; x++){
            mtem[t][0][x] = cubo[x][0][y];
        }
        t++;
    }
    guarda();
}

void gira_arriba_derecha(){
    t = 0;
    for(int y = 2; y >= 0; --y){
        for(int x = 0; x < 3; x++){
            mtem[x][0][t] = cubo[y][0][x];
        }
        t++;
    }
    guarda();
}

void gira_abajo_izquierda(){
    t = 0;
    for(int y = 2; y >= 0; --y){
        for(int x = 0; x < 3; x++){
            mtem[t][2][x] = cubo[x][2][y];
        }
        t++;
    }
    guarda();
}

void gira_abajo_derecha(){
    t = 0;
    for(int y = 2; y >= 0; --y){
        for(int x = 0; x < 3; x++){
            mtem[x][2][t] = cubo[y][2][x];
        }
        t++;
    }
    guarda();
}

void gira_fondo_izquierda(){
    t = 0;
    for(int y = 2; y >= 0; --y){
        for(int x = 0; x < 3; x++){
            mtem[2][t][x] = cubo[2][x][y];
        }
        t++;
    }
    guarda();
}

void gira_fondo_derecha(){
    t = 0;
    for(int y = 2; y >= 0; --y){
        for(int x = 0; x < 3; x++){
            mtem[2][x][t] = cubo[2][y][x];
        }
        t++;
    }
    guarda();
}

Girar Una Matriz De Dos Dimensiones En C++

#include <cstdlib>
#include <iostream>
#include <ctime>
#define n 5

using namespace std;

void gira_izquierda();
void gira_derecha();
void guarda_tem();

int matriz[n][n];
int mTem[n][n];

int main()
{
    int opc;
    srand(time(0));
    for(int y = 0; y < n; y++){
        for(int x = 0; x < n; x++){
            matriz[y][x] = rand()%10;
            cout<<matriz[y][x]<<" ";
        }
        cout<<endl;
    }
    cout<<endl;
    while(true){
        cout<<"1) Gira Izquierda\n2) Gira Derecha\n3) Salir\n";
        cin>>opc;
        switch(opc){
            case 1:
                gira_izquierda();
                break;
            case 2:
                gira_derecha();
                break;
            case 3:
                return 0;
            default:
                cerr<<"Error";
                cin.get();
                cin.get();
                system("cls");
                break;
        }
    }
    
    return 0;
}

void gira_izquierda(){
    int t = 0;
    for(int i = n-1; i >= 0; --i){
        for(int j = 0; j < n; j++){
            mTem[t][j] = matriz[j][i];
        }
        t++;
    }
    guarda_tem();
}

void gira_derecha(){
    int t;
    for(int i = 0; i < n; i++){
        t = 0;
        for(int j = n-1; j >= 0; --j){
            mTem[i][t] = matriz[j][i];
            t++;
        }
    }
    guarda_tem();
}

void guarda_tem(){
    for(int x = 0; x < n; x++){
        for(int y = 0; y < n; y++){
            matriz[x][y] = mTem[x][y];
            cout<<matriz[x][y]<<" ";
        }
        cout<<endl;
    }
}