Ir ao conteúdo

Fabiani

Membro Júnior
  • Posts

    7
  • Cadastrado em

  • Última visita

Reputação

2
  1. Fabiani

    Ajuda em Matrizes

    Olá, bom to fazendo um exercício em que tenho que procurar 5 numeros em uma Matriz. E preciso escrever para cada numero se ele foi ou não encontrado na matriz. Se ele foi preciso escrever também a posição em que ele foi encontrado. Eu fiz e ele tá funcionando certinho, mas na hora de imprimir, se o numero estiver presente na matriz ele imprime a primeira vez certo, mostrando sua posição corretamente, mas também imprime junto outras mensagens dizendo que o numero não esta na matriz, bom vejam ai meu código, o erro deve estar na estrutura mas ja tentei fazer algumas mudanças e continua igual =( #include <stdio.h>#include <stdlib.h>#define t 3 int main(){int m[t][t];int i,j,n,cont=0; //Colocando os numeros na matrizprintf("Informe os elementos da matriz M: \n");for(i=0;i<t;i++)for(j=0;j<t;j++){printf("[%d][%d] : ", i,j);scanf("%d", &m[i][j]); } //Escreve a matriz printf("\n"); for(i=0;i<t;i++){ for(j=0;j<t;j++) printf("%d | ", m[i][j]); printf("\n \n");} //Aqui ele verifica se o numero esta na matriz ou nao, e no fim informa a mensagem adequadaprintf("Informe 5 numeros para encontrar na Matriz M: \n"); do{ scanf("%d", &n); for(i=0;i<t;i++) for(j=0;j<t;j++){ if(n==m[i][j]){ printf("Se encontra na posicao [%d][%d]", i,j);}else{printf("Nao se encontra!\n");}}cont++;}while(cont<5); system("pause"); } desde ja agradeço!
  2. Fabiani

    Ajuda 0

    Oi, eu tenho um trabalho de implementação para fazer, tenho que montar um jogo Othello/Reversi. Uma breve explicação sobre o jogo: "É jogo para dois jogadores , jogado em um Tabuleiro de 8x8 onde inicialmente são colocadas 4 peças ao centro , duas de cada cor em diagonais onde a peça preta faz sempre o primeiro movimento e os jogadores jogam alternadamente , o jogo tem como meta capturar as peças adversárias e transformá-las nas da sua cor , vence quem tiver mais peças ao seu favor no final da partida . O jogo acaba quando não há mais casas a se jogarem dentro do tabuleiro ou quando não houver mais jogadas possíveis dentro das regras para ambos os jogadores. Partindo da Premissa de que para reverter uma ou mais peças adversárias é necessários que a cerquem em Diagonais , Verticais ou Horizontais , ou seja ... Cercando de ambos os lados das peças a serem capturadas com 2 peças de cada lado. " Então eu cheguei nisso: #include <stdio.h>#define TAM 9 char tab[TAM][TAM];char letra;int numero; void fazer_tabela(char tab[TAM][TAM]){int i,j;for (i=0;i<TAM+1;i++){for(j=0;j<TAM+1;j++){tab[i][j]='.';}}tab[0][0] = ' ';tab[1][0] = '1'; tab[2][0] = '2';tab[3][0] = '3';tab[4][0] = '4';tab[5][0] = '5';tab[6][0] = '6'; tab[7][0] = '7';tab[8][0] = '8'; tab[0][1] = 'A'; tab[0][2] = 'B';tab[0][3] = 'C';tab[0][4] = 'D';tab[0][5] = 'E';tab[0][6] = 'F';tab[0][7] = 'G';tab[0][8] = 'H'; tab[5][5] = 'X';tab[5][4] = 'O';tab[4][5] = 'O';tab[4][4] = 'X';} char montar_tabela(char tab[TAM][TAM]){ int i, j; for(i=0;i<TAM;i++){ for(j=0; j<TAM; j++){ printf("%2c", tab[i][j]); } printf("\n"); } } int mudando(char letra){int letrapnumero;switch(letra){ case 'a': letrapnumero = 1; break; case 'b': letrapnumero = 2; break; case 'c': letrapnumero = 3; break; case 'd': letrapnumero = 4; break; case 'e': letrapnumero = 5; break; case 'f': letrapnumero = 6; case 'g': letrapnumero = 7; case 'h': letrapnumero = 8;}return letrapnumero;} int procurando(char tab[TAM][TAM]){ // procurando '.' na matriz int i,j; for(i=1;i<=TAM;i++){ for(j=1;j<=TAM;j++){ if(tab[i][j]=='.'){ return 1; }else{ return 0; // se não encontrar nenhum '.' o jogo termina } } }} int achando(char tab[TAM][TAM], int jogador){int i,j,k;printf("Primeiro entre com uma LETRA e depois com um NUMERO referente na tabela: \n"); scanf(" %c %d", &letra, &numero); if(tab[numero][i]=='.'){ if(jogador==1){ //considerando que o jogador 1 seja o X // Loop para a esquerda até encontrar uma peça do adversário ou a borda da tabela for(j=i-1;tab[numero][j]=='O' && j!=0 ;j--); // verifica se o movimento é valido if(i-j <=1 || tab[numero][j] != 'X'); //movimento invalido return 1; }else // converte todas as peças do oponente em duas peças suas for(k=i;k>j;k--) tab[numero][k] = 'X'; }else{ printf("Lugar ja ocupado\n"); } montar_tabela(tab); getchar();} int main (){int i,j,k, pg1=0, pg2=0, jogador=1;fazer_tabela(tab);montar_tabela(tab); do{ if(jogador==1){ printf("Jogador 1\n"); achando(tab, jogador); k=procurando(tab); jogador=2; }else{ printf("Jogador 2\n"); achando(tab, jogador); k=procurando(tab); jogador=1; } } while(k==1); for(i=1;i<=TAM;i++){ for(j=1;j<=TAM;j++){ if(tab[i][j]=='X'){ pg1++; }else{ pg2++; } } } if(pg1>pg2){ printf("Jogador 1 venceu"); }else{ printf("Jogador 2 venceu");}return 0; } O problema é que sempre quando escolho um lugar na tabela, exemplo = E3, ele dá como "lugar já ocupado"... Se alguém conseguir ajudar a localizar o problema, agradeço!

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...