Advertisement
Guest User

CAÇA PALAVRAS C++

a guest
Nov 21st, 2014
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.00 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3.  
  4. using namespace std;
  5.  
  6.    // VARIAVEIS GLOBAIS
  7.    int tamMat;
  8.    char matCP[50][50];
  9.    string pal;
  10.  
  11.  
  12.     // FUNÇÃO PARA PREENCHER A MATRIZ
  13.  
  14.     void fillMat(int tamMat, string preMat){
  15.  
  16.         int cont = 0, i, j;
  17.              for(i = 0; i < tamMat; i++){
  18.                        for(j = 0; j < tamMat; j++){
  19.                             if(preMat[cont] == ' '){
  20.                                 cont++;
  21.                                 matCP[i][j] = preMat[cont];
  22.                                 cont++;
  23.                             }
  24.                             else{
  25.                                 matCP[i][j] = preMat[cont];
  26.                                 cont++;
  27.                             }
  28.                       }
  29.                 }
  30.     }
  31.  
  32.     // FUNÇÃO PARA FAZER A VERIFICAÇÂO DAS PALAVRAS PASSADAS PELA FUNÇÂO BUSCA()
  33.  
  34.     void verifica(string buscaP, string palBuscar, int c) {
  35.         int cont = 0, cc = 0, i,j,k = 1,l = 0, m = 0;
  36.         bool contP = false;
  37.  
  38.         for(i = 0; i < tamMat; i++){
  39.             for(j = 0; j < tamMat; j++){
  40.  
  41.                 if(palBuscar[0] == matCP[i][j]){
  42.  
  43.                     // VERIFICA HORIZONTAL
  44.  
  45.                     if(!contP){
  46.                         for(l = j; l < tamMat; l++){
  47.                             if(palBuscar[cc] == matCP[i][l]){
  48.                                 cont++;
  49.                             }
  50.                             cc++;
  51.                         }
  52.                             if(cont == palBuscar.size()) {
  53.                                 cout<<"Teste "<<c<<" - "<<palBuscar<<endl;
  54.                                 cout<<"Palavra encontrada!"<<endl;
  55.                                 contP = true;
  56.                                 cont = 0;
  57.                             }
  58.                     }
  59.  
  60.                     // VERIFICA VERTICAL
  61.  
  62.                     if(!contP){
  63.  
  64.                     cc = 0;
  65.                     cont = 0;
  66.  
  67.                         for(l = i; l < tamMat; l++){
  68.  
  69.                             m = j;
  70.  
  71.                                 if(palBuscar[cc] == matCP[l][m]){
  72.                                     cont++;
  73.                                 }
  74.                                 cc++;
  75.                         }
  76.                             if(cont == palBuscar.size()) {
  77.                             cout<<"Teste "<<c<<" - "<<palBuscar<<endl;
  78.                             cout<<"Palavra encontrada!"<<endl;
  79.                             contP = true;
  80.                             cont = 0;
  81.                         }
  82.  
  83.                     }
  84.  
  85.                     // VERIFICA DIAGONAL
  86.  
  87.                     if(!contP){
  88.                         for(l = j; l < tamMat; l++){
  89.                             if(palBuscar[cc] == matCP[l][l]){
  90.                                 cont++;
  91.                             }
  92.                             cc++;
  93.                         }
  94.                         if(cont == palBuscar.size()) {
  95.                             cout<<"Teste "<<c<<" - "<<palBuscar<<endl;
  96.                             cout<<"Palavra encontrada!"<<endl;
  97.                             contP = true;
  98.                             cont = 0;
  99.                         }
  100.  
  101.                     }
  102.                     if(!contP){
  103.                             cout<<"Teste "<<c<<" - "<<palBuscar<<endl;
  104.                             cout<<"Palavra não encontrada!"<<endl;
  105.                             contP = true;
  106.  
  107.                     }
  108.  
  109.                 }
  110.             }
  111.  
  112.         }
  113.  
  114.     }
  115.  
  116.     //FUNÇÃO PARA SEPARAR AS PALAVRAS PARA ENVIAR SEPARADAMENTE PARA A FUNÇÂO VERIFICA()
  117.  
  118.     void busca(string buscaP){
  119.         int contInicial = 0, contFinal = 0, i = 0, c = 1, c1 = 0, c2 = 0;
  120.         string palBuscar;
  121.  
  122.             // REPETE ATÉ CHEGAR NO CARACTER DELIMITADOR DA STRING
  123.             do{
  124.  
  125.                 // QUANDO ENCONTRAR UM ESPAÇO
  126.                 if(buscaP[i] == ' ') {
  127.                      contFinal = i;
  128.  
  129.                      // SEPARA A STRING DO INICIO ATÉ O FINAL DA FRASE
  130.                      palBuscar = buscaP.substr(contInicial, contFinal - contInicial);
  131.  
  132.                      verifica(buscaP, palBuscar, c);
  133.                      contInicial = contFinal+1;
  134.                      c++;
  135.  
  136.                 }
  137.  
  138.                 // SE FOR O ULTIMO CARACTER DA STRING
  139.                 if( buscaP[i+1] == '\0'){
  140.                      contFinal = i+1;
  141.                      palBuscar = buscaP.substr(contInicial, (contFinal + 1) - contInicial);
  142.                      verifica(buscaP, palBuscar, c);
  143.                      c++;
  144.                 }
  145.                 i++;
  146.             }while(buscaP[i] != '\0');
  147.     }
  148.  
  149.  
  150.  
  151.     int main(void){
  152.     setlocale(LC_ALL,"");
  153.  
  154.         string preMat, buscaP;
  155.         bool f1;
  156.  
  157.         cout<<"Bem vindo ao jogo: Caça Palavras 1.0 \n";
  158.         cout<<"Informe o tamanho que você deseja para o caça palavras: \n";
  159.             cin>>tamMat;
  160.  
  161.             // LIMPA BUFFER
  162.             fflush(stdin);
  163.  
  164.         while(!f1){
  165.         cout<<"Por favor, digite "<< tamMat*tamMat <<" caracteres, separados por um espaço!\n";
  166.             getline(cin, preMat);
  167.  
  168.  
  169.                 // SÓ CHAMA A FUNÇÃO FILLMAT() SE A QUANTIDADE DE CARACTERES INFORMADAS FOR IGUAL
  170.                 // AO  TOTAL DE CARACTERES NECESSARIOS PARA PREENCHER A MATRIZ + OS ESPAÇOS ENTRE AS LETRAS
  171.                 if(preMat.size() != ( (tamMat*tamMat) + (tamMat*tamMat - 1) )){
  172.                     cout<<"Quantidade de caracteres invalida, por favor digite "<< tamMat*tamMat <<" caracteres! \n";
  173.                 }
  174.                 else{
  175.                     fillMat(tamMat, preMat);
  176.                     f1 = true;
  177.                 }
  178.             }
  179.  
  180.         cout<<"Por favor, informe quais palavras você deseja verificar, separando-as por espaços, exemplo: \"Abacaxi Manga\" \n";
  181.             getline(cin, buscaP);
  182.  
  183.                 // CHAMA A FUNÇÃO BUSCA() PASSANDO COMO PARAMETRO A LINHA INTEIRA DE CARACTERES INFORMADOS
  184.                 busca(buscaP);
  185.  
  186.  
  187.  
  188.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement