Advertisement
AntonioVillanueva

Matriz RUSA 5x5 version terminal c++ sin librerias graficas

Aug 15th, 2019
315
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.00 KB | None | 0 0
  1. // Antonio Villanueva Segura Matriz Rusa 5x5 sin librerias graficas solo terminal
  2. #include<iostream>
  3. #include<stdlib.h>
  4. #include<time.h>
  5. #include <string>
  6. using namespace std;
  7.  
  8. //-------------------------------------------------------------------------------------------
  9. int sumaFila (int fila,int matriz[5][5],bool validados[5][5],bool soloValidados=true){
  10.     int suma=0;
  11.     for (int columna=0;columna<5;columna++){
  12.         if (soloValidados){
  13.             if (validados [fila][columna]){//Si en la matriz validados es 1 sumo si no No
  14.                 suma+=matriz[fila][columna];//Suma toda esta fila      
  15.             }
  16.         }
  17.         else{//Suma todos los elementos de esta fila , sin utilizar la matriz de validacion
  18.                 suma+=matriz[fila][columna];//Suma toda esta fila  
  19.             }
  20.         }
  21.  
  22.     return suma;
  23. }
  24. //-------------------------------------------------------------------------------------------
  25. int sumaColumna (int columna,int matriz[5][5],bool validados[5][5],bool soloValidados=true){
  26.     int suma=0;
  27.  
  28.     for (int fila=0;fila<5;fila++){;
  29.  
  30.         if (soloValidados){
  31.             if (validados [fila][columna]){//Si en la matriz validados es 1 sumo si no No
  32.                 suma+=matriz[fila][columna];//Suma toda esta fila      
  33.             }
  34.            
  35.         }
  36.         else{//Suma todos los elementos de esta fila , sin utilizar la matriz de validacion
  37.                 suma+=matriz[fila][columna];//Suma toda esta fila  
  38.             }          
  39.         }
  40.    
  41.     return suma;
  42. }
  43.  
  44. //-------------------------------------------------------------------------------------------
  45. bool testLinea(int linea,int a[5][5],bool b[5][5],bool c[5][5]){//Compara matriz usuario con la prevista
  46.     //Si la lina coincide con lo previsto retorna verdadero si no falso
  47.     if (sumaFila (linea,a,b) == sumaFila (linea,a,c)){
  48.         return true;
  49.     }
  50.     return false;
  51. }
  52.  
  53. //-------------------------------------------------------------------------------------------
  54. bool testColumna(int columna,int a[5][5],bool b[5][5],bool c[5][5]){//Compara matriz usuario con la prevista
  55.     //Si la columna usuario maquina  retorna verdadero si no falso
  56.     if (sumaColumna (columna,a,b) == sumaColumna (columna,a,c)){//cpu == usuario ?
  57.         return true;
  58.     }
  59.     return false;
  60. }
  61. //-------------------------------------------------------------------------------------------
  62. string creaSuperior(int matriz[5][5],bool validados[5][5],bool usuario[5][5]){
  63.     //Crea la linea de sumas, superior , suma de columnas de datos validados en la matriz validados[]
  64.     string LineaSuperior="";
  65.     for (int columna=0;columna<5;columna++){   
  66.        
  67.         if ( !(testColumna(columna,matriz,validados,usuario))){//Coincide la suma esperada con la del usuario ?
  68.             LineaSuperior+="["+to_string (sumaColumna(columna,matriz,validados)) +"]\t";//Solo datos validados
  69.         }else{
  70.             LineaSuperior+="[*]\t";
  71.         }
  72.     }
  73.     return LineaSuperior;
  74. }
  75.  
  76. //-------------------------------------------------------------------------------------------
  77. //-------------------------------------------------------------------------------------------
  78.  
  79. int main(){
  80.     int opc;
  81.     int x,y;
  82.     int matriz1[5][5];//La creo sin inicializar , sin valores predefinidos , salvo que quieras valores concretos
  83.     bool validados[5][5];//Datos aleatorios 1 o 0, que es lo que voy a sumar de  la anterior , puede ser fijo si quieres
  84.     bool usuario[5][5];//Datos que introduce el usuario
  85.    
  86.     srand(time(NULL));//generamos aleatoriamente ciertas posiciones    
  87.        
  88. //Creo , inicializo valores de la matriz1 y la matriz "validados" , dos por uno , en un mismo bucle
  89.     for (int x=0;x<5;x++){
  90.         for (int y=0;y<5;y++){
  91.             matriz1[x][y]=1+rand()%9;//Valores Numericos
  92.             validados[x][y]=rand()%2;//Si es 1 se suma  0 no se suma
  93.             usuario[x][y]=true;//Todos los elementos se suman
  94.         }
  95.     }
  96.  
  97.     cout <<" I N I C I A L I Z A D A S  MATRICES "<<endl;
  98.        
  99. //BUCLE PRINCIPAL juego -------------------------------------------------------------------
  100.     while (true){//Bucle principal del juego
  101.                    
  102. //MATRIZ DE USUARIO
  103.             cout <<"DATOS ENTRADA USUARIO"<<endl;
  104.             for (int linea=0;linea<5;linea++){
  105.                 cout <<"\n\t\t\t";
  106.                 for (int columna=0;columna<5;columna++){
  107.                     cout<<usuario [linea][columna] <<"\t";
  108.                 }
  109.                 cout<<endl;//Salto de linea
  110.             }          
  111.            
  112.             cout<<"DATOS VALIDADOS "<<endl;
  113. //MATRIZ DE DATOS VALIDADOS EN validados [5][5] ...pueden ser fijos        
  114.             for (int linea=0;linea<5;linea++){
  115.                 cout <<"\n\t\t\t";
  116.                 for (int columna=0;columna<5;columna++){
  117.                     cout<<validados [linea][columna] <<"\t";
  118.                 }
  119.                 cout<<endl;//Salto de linea
  120.             }
  121.            
  122. //DATOS DE LA MATRIZ CON LAS SUMAS         
  123.             cout<<"MATRIZ "<<endl;  
  124.             cout << "\n\t\t\t"<<creaSuperior (matriz1,validados,usuario)<<endl;//Suma superior 
  125.            
  126.            
  127.             for (int linea=0;linea<5;linea++){//Recorre todas la lineas
  128.                
  129.                
  130.                 //Crea lateral izquierda
  131.                 if  (!testLinea(linea,matriz1,validados,usuario)){//Valida la suma
  132.                    
  133.                     cout <<"\n\t\t"<<"["<<to_string (sumaFila(linea,matriz1,validados))<<"]";//Suma izquierda
  134.                 }else{cout <<"\n\t\t[*]";}
  135.                
  136.                 cout <<"\t";
  137.                
  138.                
  139.                 for (int columna=0;columna<5;columna++){//Imprime la matriz1 entera
  140.                     cout<< matriz1 [linea][columna] << "\t";
  141.                 }
  142.                
  143.                 //cout <<"["<<to_string (sumaFila(linea,matriz1,validados))<<"]";//Suma derecha
  144.                
  145.                 //Crea laterala derecho
  146.                 //Crea lateral izquierda
  147.                 if  (!testLinea(linea,matriz1,validados,usuario)){//Valida la suma
  148.                    
  149.                     cout <<"["<<to_string (sumaFila(linea,matriz1,validados))<<"]";//Suma izquierda
  150.                 }else{cout <<"[*]";}           
  151.                
  152.                
  153.                 cout<<endl;//Salto de linea
  154.             }      
  155.            
  156.             cout << "\n\t\t\t"<<creaSuperior (matriz1,validados,usuario)<<endl;//Suma inferior     
  157.            
  158.  
  159.             cout<<"\t ===================================================="<<endl;
  160.  
  161. // FIN DATOS DE LA MATRIZ CON LAS SUMAS
  162.  
  163. //Entrada de datos     
  164.             cout <<"Introduzca la coordenada a modificar ,elemento que se elimina o anade "<<endl;
  165.            
  166.             cout <<"x:";cin>>y;
  167.             cout <<"y:";cin >>x;
  168.        
  169.             usuario[x][y]=!usuario[x][y];//Invierte el estado del usuario , invertimos en la matriz de usuario
  170.        
  171.             cout <<"Modificado "<<to_string(x)<<","<<to_string(y)<<" = "<<to_string(usuario[x][y])<<endl;
  172.            
  173.     }
  174. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement