Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.90 KB | None | 0 0
  1. ///////////////////////////////////////////
  2. //
  3. // PRACTICO: 3
  4. // PROBLEMA: 4
  5. // APELLIDO: Murillo
  6. // NOMBRES: Sebastian Matias
  7. // MATRICULA: 37218182
  8. // DNI: 37218182
  9. // COMISION: 3.2
  10. //
  11. //////////////////////////////////////////
  12.  
  13. #include <iostream>
  14. #include <cstdlib>
  15. #include <cstring>
  16.  
  17. using namespace std;
  18.  
  19. int main(int argc, char *argv[])
  20. {
  21.     int GEN_RAND_A = 0;
  22.     int SET_DEF_A = 0;
  23.     int SHOW_MATRX = 0;
  24.     int USING_BAT = 0;
  25.    
  26.     char A[10][10];
  27.     char input[250];    
  28.     char word[30];
  29.     int FOUND = 0, CharNumber = 0,length = 0;
  30.     cout<<"Ingese A: "<<endl;
  31.        
  32.     if(USING_BAT)
  33.     {
  34.         strcpy (input, argv[2]);
  35.         cout<<input;
  36.     }
  37.     if(USING_BAT == 0 && SET_DEF_A == 0 && GEN_RAND_A == 0) cin.getline(input, sizeof(input));
  38.     if(SET_DEF_A == 0 && GEN_RAND_A == 0)
  39.     {
  40.         int p = 0, I = 0, J = 0;
  41.         while(true)
  42.         {
  43.             if(input[p] != ' ')
  44.             {
  45.                 A[I][J] = input[p];            
  46.                 J++;
  47.                 if(J == 10)
  48.                 {
  49.                     J = 0;
  50.                     I++;
  51.                 }
  52.                 if(I == 10) break;
  53.             }
  54.             p++;
  55.         }
  56.     }    
  57.     if(GEN_RAND_A == 1) // GENERATE RANDOM MATRIX
  58.     {
  59.         for(int x = 0;x < 10;x++)
  60.         {
  61.             for(int i = 0;i < 10;i++)
  62.             {
  63.                 A[x][i] = char(65 + ((rand()%100)+1)/4);
  64.             }            
  65.         }        
  66.     }
  67.     if(SET_DEF_A == 1) // SET DEFAULT MATRIX
  68.     {
  69.         A[0][0] = 'A';A[0][1] = 'B';A[0][2] = 'H';A[0][3] = 'O';A[0][4] = 'L';A[0][5] = 'A';A[0][6] = 'P';A[0][7] = 'T';A[0][8] = 'A';A[0][9] = 'M';
  70.         A[1][0] = 'H';A[1][1] = 'M';A[1][2] = 'O';A[1][3] = 'P';A[1][4] = 'A';A[1][5] = 'L';A[1][6] = 'E';A[1][7] = 'L';A[1][8] = 'U';A[1][9] = 'E';
  71.         A[2][0] = 'M';A[2][1] = 'O';A[2][2] = 'L';A[2][3] = 'H';A[2][4] = 'T';A[2][5] = 'O';A[2][6] = 'O';A[2][7] = 'E';A[2][8] = 'R';A[2][9] = 'T';
  72.         A[3][0] = 'I';A[3][1] = 'K';A[3][2] = 'A';A[3][3] = 'B';A[3][4] = 'O';A[3][5] = 'H';A[3][6] = 'T';A[3][7] = 'J';A[3][8] = 'A';A[3][9] = 'L';
  73.         A[4][0] = 'Y';A[4][1] = 'H';A[4][2] = 'D';A[4][3] = 'H';A[4][4] = 'I';A[4][5] = 'L';A[4][6] = 'E';A[4][7] = 'H';A[4][8] = 'J';A[4][9] = 'V';
  74.         A[5][0] = 'B';A[5][1] = 'A';A[5][2] = 'O';A[5][3] = 'I';A[5][4] = 'A';A[5][5] = 'U';A[5][6] = 'O';A[5][7] = 'A';A[5][8] = 'I';A[5][9] = 'E';
  75.         A[6][0] = 'L';A[6][1] = 'O';A[6][2] = 'T';A[6][3] = 'L';A[6][4] = 'M';A[6][5] = 'L';A[6][6] = 'F';A[6][7] = 'G';A[6][8] = 'H';A[6][9] = 'J';
  76.         A[7][0] = 'U';A[7][1] = 'H';A[7][2] = 'U';A[7][3] = 'L';A[7][4] = 'A';A[7][5] = 'M';A[7][6] = 'O';A[7][7] = 'A';A[7][8] = 'V';A[7][9] = 'X';
  77.         A[8][0] = 'Z';A[8][1] = 'E';A[8][2] = 'L';A[8][3] = 'A';A[8][4] = 'M';A[8][5] = 'I';A[8][6] = 'J';A[8][7] = 'H';A[8][8] = 'O';A[8][9] = 'S';
  78.         A[9][0] = 'W';A[9][1] = 'A';A[9][2] = 'H';A[9][3] = 'A';A[9][4] = 'L';A[9][5] = 'O';A[9][6] = 'H';A[9][7] = 'A';A[9][8] = 'T';A[9][9] = 'O';
  79.     }
  80.     if(SHOW_MATRX) // SHOW MATRIX
  81.     {
  82.         cout<<"           MATRIZ A:"<<endl;
  83.         for(int x = 0;x < 10;x++)
  84.         {
  85.             for(int i = 0;i < 10;i++)
  86.             {
  87.                 cout<<" ["<<A[x][i]<<"] ";
  88.             }
  89.             cout<<endl;
  90.         }        
  91.     }    
  92.     cout<<"Ingrese la palabra a buscar: ";
  93.     cin.getline(input, sizeof(word));
  94.     cout<<endl;  
  95.     for(int p = 0;p < sizeof(word);p++)
  96.     {
  97.         if(input[p] == '.') break;
  98.         CharNumber = int(input[p]);
  99.         switch ( CharNumber )
  100.         {
  101.             case 'A':
  102.             case 'B':
  103.             case 'C':
  104.             case 'D':
  105.             case 'E':
  106.             case 'F':
  107.             case 'G':
  108.             case 'H':
  109.             case 'I':
  110.             case 'J':
  111.             case 'K':
  112.             case 'L':
  113.             case 'M':
  114.             case 'N':
  115.             case 'Ñ':
  116.             case 'O':
  117.             case 'P':
  118.             case 'Q':
  119.             case 'R':
  120.             case 'S':
  121.             case 'T':
  122.             case 'U':
  123.             case 'V':
  124.             case 'W':
  125.             case 'X':
  126.             case 'Y':
  127.             case 'Z':
  128.             word[length] = input[p];
  129.             length++;
  130.         }
  131.     }
  132.     if(SHOW_MATRX)
  133.     {
  134.         cout<<"La palabra a buscar es '";
  135.         for(int q = 0;q < length;q++)
  136.         {
  137.             cout<<word[q];
  138.         }
  139.         cout<<"'"<<" y tiene una longitud de "<<length<<"."<<endl;
  140.     }
  141.     if(length < 0 || length > 10)
  142.     {
  143.         cout<<"ERROR: La palabra es invalida."<<endl;
  144.         system("PAUSE");
  145.         return 0;
  146.     }    
  147.    
  148.     for(int I = 0;I < 10;I++)
  149.     {
  150.         for(int J = 0;J < 10;J++)
  151.         {
  152.             if(length == 1)
  153.             {
  154.                 if(A[I][J] == word[0]) FOUND++;
  155.             }
  156.             else
  157.             {
  158.                 // HORIZONTALES
  159.                 for(int L = 0;L < length;L++)
  160.                 {
  161.                     if(A[I][J+L] != word[L]) L = length;
  162.                     if(L == length-1)
  163.                     {
  164.                         FOUND++;
  165.                         if(SHOW_MATRX) cout<<"Palabra encontrada en HORIZONTAL A."<<endl;
  166.                     }
  167.                 }
  168.                 for(int L = 0;L < length;L++)
  169.                 {
  170.                     if(A[I][J-L] != word[L]) L = length;
  171.                     if(L == length-1)
  172.                     {
  173.                         FOUND++;
  174.                         if(SHOW_MATRX) cout<<"Palabra encontrada en HORIZONTAL B."<<endl;
  175.                     }
  176.                 }
  177.                
  178.                 // VERTICALES
  179.                 for(int L = 0;L < length;L++)
  180.                 {
  181.                     if(A[I+L][J] != word[L]) L = length;
  182.                     if(L == length-1)
  183.                     {
  184.                         FOUND++;
  185.                         if(SHOW_MATRX) cout<<"Palabra encontrada en VERTICAL A."<<endl;
  186.                     }
  187.                 }
  188.                 for(int L = 0;L < length;L++)
  189.                 {
  190.                     if(A[I-L][J] != word[L]) L = length;
  191.                     if(L == length-1)
  192.                     {
  193.                         FOUND++;
  194.                         if(SHOW_MATRX) cout<<"Palabra encontrada en VERTICAL B."<<endl;
  195.                     }
  196.                 }
  197.                
  198.                 // DIAGONALES PRINCIPALES
  199.                 for(int L = 0;L < length;L++)
  200.                 {
  201.                     if(A[I+L][J+L] != word[L]) L = length;
  202.                     if(L == length-1)
  203.                     {
  204.                         FOUND++;
  205.                         if(SHOW_MATRX) cout<<"Palabra encontrada en DIAGONAL A."<<endl;
  206.                     }
  207.                 }
  208.                 for(int L = 0;L < length;L++)
  209.                 {
  210.                     if(A[I-L][J-L] != word[L]) L = length;
  211.                     if(L == length-1)
  212.                     {
  213.                         FOUND++;
  214.                         if(SHOW_MATRX) cout<<"Palabra encontrada en DIAGONAL B."<<endl;
  215.                     }
  216.                 }
  217.                
  218.                 // DIAGONALES SECUNDARIAS
  219.                 for(int L = 0;L < length;L++)
  220.                 {
  221.                     if(A[I-L][J+L] != word[L]) L = length;
  222.                     if(L == length-1)
  223.                     {
  224.                         FOUND++;
  225.                         if(SHOW_MATRX) cout<<"Palabra encontrada en DIAGONAL C."<<endl;
  226.                     }
  227.                 }
  228.                 for(int L = 0;L < length;L++)
  229.                 {
  230.                     if(A[I+L][J-L] != word[L]) L = length;
  231.                     if(L == length-1)
  232.                     {
  233.                         FOUND++;
  234.                         if(SHOW_MATRX) cout<<"Palabra encontrada en DIAGONAL D."<<endl;
  235.                     }
  236.                 }
  237.             }
  238.         }
  239.     }
  240.     cout<<FOUND<<endl;
  241.     system("PAUSE");
  242.     return 0;
  243. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement