Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- using namespace std;
- // VARIAVEIS GLOBAIS
- int tamMat;
- char matCP[50][50];
- string pal;
- // FUNÇÃO PARA PREENCHER A MATRIZ
- void fillMat(int tamMat, string preMat){
- int cont = 0, i, j;
- for(i = 0; i < tamMat; i++){
- for(j = 0; j < tamMat; j++){
- if(preMat[cont] == ' '){
- cont++;
- matCP[i][j] = preMat[cont];
- cont++;
- }
- else{
- matCP[i][j] = preMat[cont];
- cont++;
- }
- }
- }
- }
- // FUNÇÃO PARA FAZER A VERIFICAÇÂO DAS PALAVRAS PASSADAS PELA FUNÇÂO BUSCA()
- void verifica(string buscaP, string palBuscar, int c) {
- int cont = 0, cc = 0, i,j,k = 1,l = 0, m = 0;
- bool contP = false;
- for(i = 0; i < tamMat; i++){
- for(j = 0; j < tamMat; j++){
- if(palBuscar[0] == matCP[i][j]){
- // VERIFICA HORIZONTAL
- if(!contP){
- for(l = j; l < tamMat; l++){
- if(palBuscar[cc] == matCP[i][l]){
- cont++;
- }
- cc++;
- }
- if(cont == palBuscar.size()) {
- cout<<"Teste "<<c<<" - "<<palBuscar<<endl;
- cout<<"Palavra encontrada!"<<endl;
- contP = true;
- cont = 0;
- }
- }
- // VERIFICA VERTICAL
- if(!contP){
- cc = 0;
- cont = 0;
- for(l = i; l < tamMat; l++){
- m = j;
- if(palBuscar[cc] == matCP[l][m]){
- cont++;
- }
- cc++;
- }
- if(cont == palBuscar.size()) {
- cout<<"Teste "<<c<<" - "<<palBuscar<<endl;
- cout<<"Palavra encontrada!"<<endl;
- contP = true;
- cont = 0;
- }
- }
- // VERIFICA DIAGONAL
- if(!contP){
- for(l = j; l < tamMat; l++){
- if(palBuscar[cc] == matCP[l][l]){
- cont++;
- }
- cc++;
- }
- if(cont == palBuscar.size()) {
- cout<<"Teste "<<c<<" - "<<palBuscar<<endl;
- cout<<"Palavra encontrada!"<<endl;
- contP = true;
- cont = 0;
- }
- }
- if(!contP){
- cout<<"Teste "<<c<<" - "<<palBuscar<<endl;
- cout<<"Palavra não encontrada!"<<endl;
- contP = true;
- }
- }
- }
- }
- }
- //FUNÇÃO PARA SEPARAR AS PALAVRAS PARA ENVIAR SEPARADAMENTE PARA A FUNÇÂO VERIFICA()
- void busca(string buscaP){
- int contInicial = 0, contFinal = 0, i = 0, c = 1, c1 = 0, c2 = 0;
- string palBuscar;
- // REPETE ATÉ CHEGAR NO CARACTER DELIMITADOR DA STRING
- do{
- // QUANDO ENCONTRAR UM ESPAÇO
- if(buscaP[i] == ' ') {
- contFinal = i;
- // SEPARA A STRING DO INICIO ATÉ O FINAL DA FRASE
- palBuscar = buscaP.substr(contInicial, contFinal - contInicial);
- verifica(buscaP, palBuscar, c);
- contInicial = contFinal+1;
- c++;
- }
- // SE FOR O ULTIMO CARACTER DA STRING
- if( buscaP[i+1] == '\0'){
- contFinal = i+1;
- palBuscar = buscaP.substr(contInicial, (contFinal + 1) - contInicial);
- verifica(buscaP, palBuscar, c);
- c++;
- }
- i++;
- }while(buscaP[i] != '\0');
- }
- int main(void){
- setlocale(LC_ALL,"");
- string preMat, buscaP;
- bool f1;
- cout<<"Bem vindo ao jogo: Caça Palavras 1.0 \n";
- cout<<"Informe o tamanho que você deseja para o caça palavras: \n";
- cin>>tamMat;
- // LIMPA BUFFER
- fflush(stdin);
- while(!f1){
- cout<<"Por favor, digite "<< tamMat*tamMat <<" caracteres, separados por um espaço!\n";
- getline(cin, preMat);
- // SÓ CHAMA A FUNÇÃO FILLMAT() SE A QUANTIDADE DE CARACTERES INFORMADAS FOR IGUAL
- // AO TOTAL DE CARACTERES NECESSARIOS PARA PREENCHER A MATRIZ + OS ESPAÇOS ENTRE AS LETRAS
- if(preMat.size() != ( (tamMat*tamMat) + (tamMat*tamMat - 1) )){
- cout<<"Quantidade de caracteres invalida, por favor digite "<< tamMat*tamMat <<" caracteres! \n";
- }
- else{
- fillMat(tamMat, preMat);
- f1 = true;
- }
- }
- cout<<"Por favor, informe quais palavras você deseja verificar, separando-as por espaços, exemplo: \"Abacaxi Manga\" \n";
- getline(cin, buscaP);
- // CHAMA A FUNÇÃO BUSCA() PASSANDO COMO PARAMETRO A LINHA INTEIRA DE CARACTERES INFORMADOS
- busca(buscaP);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement