Quantcast
Channel: Tópicos
Viewing all articles
Browse latest Browse all 11336

Programa que não altera a variável contador (uso isalpha)

$
0
0
Sim tens toda a razão, peço desculpa PsySc0rpi0n e entretanto já corrigi as chavetas no código e um ; depois de um if (apaguei) e este funciona: #include "stdio.h" #define DIM 3 #define ESPACO ' ' // Por motivos de clareza de código o autor decidiu fazer a declaração das funções apesar de não ser necessário.. // pois vem antes da função principal do main! void inic (char s[][DIM]); void mostra (char s[DIM][DIM]); int Ganhou (char g[DIM][DIM], char ch); int Linha (char v[], char c); int Coluna (char g[DIM][DIM], int col, char ch); // Inicia o Tabuleiro void inic (char s[][DIM]) // Omitir uma dimensão { int i, j; for (i = 0; i < DIM; i++) for (j = 0; j < DIM; j++) s[i][j] = ESPACO; } // Mostra o aspecto do tabuleiro void mostra (char s[DIM][DIM]) // Ambas as Dimensões { int i, j; for (i = 0; i < DIM; i++) { for (j = 0; j < DIM; j++) printf ("%c %c", s[i][j], j == DIM - 1 ? ' ' : '|'); if (i != DIM - 1) printf ("\n-----------"); putchar ('\n'); } } //verifica(){for ()} Verifica se a n-ésima linha está preenchida com o char c int Linha (char Ln[], char c) // este int é de Verd ou Falso binário é um bool { return Ln[0] == Ln[1] && Ln[1] == Ln[2] && Ln[0] == c; } // Verifica se a coluna col está toda preenchida com o char ch int Coluna (char v[DIM][DIM], int col, char ch) { return v[0][col] == v[1][col] && v[1][col] == v[2][col] && v[0][col] == ch; } int Diagonal (char v[DIM][DIM], char ch) { return ( (v[0][0] == v[1][1]) && (v[1][1] == v[2][2]) && v[2][2] == ch) || (v[2][0] == v[1][1] && v[2][0] == v[0][2] && v[0][2] == ch); } int Ganhou (char M[DIM][DIM], char ch) { //return Diagonal(M[DIM][DIM],ch) || Coluna( ... esquece com os if's detecto as codinções em que se verificam Afirmaço ou Falsidades e aí sim detetam passa a verdadi !! // e usar um ou - exclusivo!??! if (Linha (M[0], ch || Linha (M[1], ch) || Linha (M[2], ch))) // se linha 1 ou 2 ou 3 tiverem totalmente preenchida com o carater do jogador return 1; //Ganha(1) if (Coluna (M, 0, ch) || Coluna (M, 1, ch) || Coluna (M, 2, ch)) return 1; if (Diagonal (M, ch)) return 1; return 0; // Não ganhou } int main () { char Velha[DIM][DIM]; int posx, posy; char ch = '0'; // Caractere para Jogar int n_jogadas = 0; inic (Velha); while (1) // Laço infinito { mostra (Velha); printf ("\n Introduza a Posição de Jogo Linha Coluna: "); scanf ("%d %d", &posx, &posy); if (posx > DIM || posy > DIM) { printf ("\n\n****Valores Inválidos****\n\n"); continue; // Próxima iteração } posx--; posy--; // Eles querem fazer uma atribuição , um decremento xD ..? Pois os índices do vetor começam em 0 if (Velha[posx][posy] == ESPACO) // Casa livre { Velha[posx][posy] = ch = (ch == '0') ? 'X' : '0'; n_jogadas++; if (Ganhou (Velha, ch)) /* Basta verificar o jogador corrente */ { printf ("\n\n**** Ganhou o Jogador %c ****\n\n", ch); break; } } else printf ("Posição já ocupada\nJogue Novamente!!!\n"); if (n_jogadas == DIM * DIM) { printf ("\n\n**** EMPATE TÉCNICO ****\n\n"); break; // Acabar o Programa } } mostra (Velha); return 0; } Apesar disto ele não deteta que ganha .. e devia acontecer , por isso vou ver melhor a função Ganhou se encontrar alguma coisa edito aqui xpto@xpto-K52Jc:~/Documents/ip$ gcc -W GaloDamasC6E04.c -o Galo xpto@xpto-K52Jc:~/Documents/ip$ ./Galo | | ----------- | | ----------- | | Introduza a Posição de Jogo Linha Coluna: 2 1 | | ----------- X | | ----------- | | Introduza a Posição de Jogo Linha Coluna: 3 1 | | ----------- X | | ----------- 0 | | Introduza a Posição de Jogo Linha Coluna: 2 2 | | ----------- X |X | ----------- 0 | | Introduza a Posição de Jogo Linha Coluna: 1 2 |0 | ----------- X |X | ----------- 0 | | Introduza a Posição de Jogo Linha Coluna: 2 3 |0 | ----------- X |X |X ----------- 0 | | Introduza a Posição de Jogo Linha Coluna: 3 3 |0 | ----------- X |X |X ----------- 0 | |0 Introduza a Posição de Jogo Linha Coluna: 1 3 |0 |X ----------- X |X |X ----------- 0 | |0 Introduza a Posição de Jogo Linha Coluna: 3 2 |0 |X ----------- X |X |X ----------- 0 |0 |0 Introduza a Posição de Jogo Linha Coluna: 1 1 **** EMPATE TÉCNICO **** X |0 |X ----------- X |X |X ----------- 0 |0 |0 edit: e obrigado pelos links ajudaram

Viewing all articles
Browse latest Browse all 11336

Trending Articles