Ir ao conteúdo
  • Cadastre-se
MateusdeDeus

C Estou com dificuldade de colocar uma matriz neste código, é para um trabalho

Posts recomendados

#include <stdio.h> //biblioteca padrão;
#include <stdlib.h> //biblioteca padrão
#include <locale.h> 
#include <windows.h>
#include <conio.h>
#include <time.h>
 
 int contagem (int matriz_numeros[5], int matriz_respostas[5]);
 
int main(void){
    //Variáveis
    int i = 0, j = 0, numdeacertos = 0; //int i= 0 vai controlar o contador, j= 0 vai controlar os segundos em que o usuário vai ter para colocar os números, numdeacertos é o número de acertos em que o usuário vai ter;
    char c; //Inicio do jogo;
	int matriz_numeros[5];
	int matriz_respostas[5];
    char nome[50];
   
    //Comando de regionalização;
    
    setlocale(LC_ALL, "Portuguese");
    
    //Título do programa;
    
    SetConsoleTitle("Jogo da memoria simples");
   
    srand(time(NULL)); //Semente para gerar os números aleatórios;
    
    printf("\n||================================================================================================||");
    printf("\n||                          BEM VINDO AO JOGO DA MEMÓRIA!!!                                       ||");
    printf("\n|| -> Olá! Por favor, digite seu nome e logo em seguida irá aparecer as regras do jogo.           ||");
    printf("\n|| -> DIVIRTA-SE!                                                                                 ||");
    printf("\n||================================================================================================||");
    //printf("\n Logo em seguida irá aparecer as regras do jogo. Divirta-se!\n\n");
    printf("\n\n -> Nome do Jogador: \n");
    scanf("%s", &nome);
    printf("\n||==============================================================================================================||");
    printf("\n|| REGRAS DO JOGO:                                                                                              ||");
    printf("\n|| Estas são as instruções que o jogador deve seguir:                                                           ||");
    printf("\n|| 1- Este programa irá gerar 5 números aleatórios entre 1 e 100.                                               ||");
    printf("\n|| 2- Você deve decorar os números exibidos em 10 segundos e depois escreve-los na ordem em que foram exibidos. ||");
    printf("\n||==============================================================================================================||");
    printf("\n");
	printf("\n -> Para iniciar, Pressione ENTER e bom jogo! :)\n");
	
    do{
        c = getch(); //Esperar o enter do usuário
    }while (c != 13);
   
    for (i= 0; i< 5; i++){
        matriz_numeros[i]= (rand() % 99)+1; //Para armazenar os números aleatórios no vetor i, números entre 0 e 29 + 1 para gerar os números que queremos;
    }
   
    j= 10; //Número desejado para contagem dos segundos;
   
    do{
        system ("cls"); //Limpa a tela
        printf ("-> Decore os numeros abaixo em: %d!!!\n\n\n", j);
        j--; //Decrementação do j para que ele vire o valor antecessor dos números desejados para os segundos;
        for (i= 0; i< 5; i++){
            printf ("%d\t", matriz_numeros[i]);
        }
        Sleep (1000); //Espero um segundo e volto para o loop;
        
    }while (j> 0); //Este loop vai acontecer enquanto j for maior que 0;
   
    system ("cls"); //Limpa a tela novamente;
    printf (" -> Informe os números que foram exibidos: \n");
   
    for (i= 0; i< 5; i++){
        printf ("\t%d° número: ", i+1); //Primeiro número, segundo número, terceiro número, quarto número, quinto número (...);
        scanf ("%d", &matriz_respostas[i]); //Ler a resposta do usuário;
        if (matriz_respostas[i]==matriz_numeros[i]){ //Se o vetor de resposta for equivalente ao vetor de números, então o usuário acertou;
            numdeacertos++; //Acertos dos números digitados pelo usuário;;
        }
    }
   
    if (numdeacertos== 5){ //Se o usuário acertou os números pedidos, printf;
        printf ("\n\n -> Parabéns, sua memória é excelente! :) Veja os número exibidos:\n\n\t");
        for (i= 0;i< 5; i++){ //Realiza o mesmo loop do começo do código, para exibir o vetor dos números para o usuário;
            printf ("%d\t", matriz_numeros[i]);
        }
    }
    else //Caso contrário, printf; 
    {
        printf ("\n\n -> Que pena, sua memória não é muito boa!  Veja os número exibidos e tente novamente. :) :\n\n\t");
        for (i= 0;i< 5; i++){ //Mostra os números para o usuário;
            printf ("%d\t", matriz_numeros[i]);
        }
    }
    printf ("\n\n");
    system ("pause");
    return 0;
}
 int contagem (int matriz_numeros[5], int matriz_resposta [5]){
 	for (int i= 0; i< 5; i++){
	 }
 }

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola, eu não sabia, vou apagar um então. Tentei, mas não eu certo no caso da matriz.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@MateusdeDeus Aqui um exemplo bem pratico.

antes

#include <stdio.h>
#include <stdlib.h>

/* Constantes */
#define TAMANHO_VETORES 10


int main()
{
  char letras[TAMANHO_VETORES];
  int numeros[TAMANHO_VETORES],contador;
  
  /* Coloca numeros no vetor */
  for(contador=0; contador<TAMANHO_VETORES; contador++)
    numeros[contador]=contador+1;
    
  /* Coloca letras no vetor */
  for(contador=0; contador<TAMANHO_VETORES; contador++)
    letras[contador]=contador+65;   /* 65 e o valor ascii da letra 'A' */
    
  /* Mostra os numeros e as letras */
  printf("\nNumeros\n");
  for(contador=0; contador<TAMANHO_VETORES; contador++)
    printf("\n%i",numeros[contador]);
  getchar();
  
  printf("\nLetras\n");
  for(contador=0; contador<TAMANHO_VETORES; contador++)
    printf("\n%c",letras[contador]);
  getchar();
  return(0);
}

depois

#include <stdio.h>
#include <stdlib.h>

/* Constantes */
#define QUANTIDADE_LINHAS 2
#define QUANTIDADE_COLUNAS 10

/* Marcadores de local */
#define NUMEROS 0   /* Local na matriz */
#define LETRAS 1    /* Local na matriz */


int main()
{
  int LetrasNumeros[QUANTIDADE_LINHAS][QUANTIDADE_COLUNAS],contador;
  
  /* Coloca numeros no vetor */
  for(contador=0; contador<QUANTIDADE_COLUNAS; contador++)
    LetrasNumeros[NUMEROS][contador]=contador+1;
    
  /* Coloca letras no vetor */
  for(contador=0; contador<QUANTIDADE_COLUNAS; contador++)
    LetrasNumeros[LETRAS][contador]=contador+65;   /* 65 e o valor ascii da letra 'A' */
    
  /* Mostra os numeros e as letras */
  printf("\nNumeros\n");
  for(contador=0; contador<QUANTIDADE_COLUNAS; contador++)
    printf("\n%i",LetrasNumeros[NUMEROS][contador]);
  getchar();
  
  printf("\nLetras\n");
  for(contador=0; contador<QUANTIDADE_COLUNAS; contador++)
    printf("\n%c",LetrasNumeros[LETRAS][contador]);
  getchar();
  return(0);
}

Os dois exemplos compilam, então você pode testar no seu compilador.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok, muito obrigado! o sr. sabe como apagar uma antiga publicação?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@MateusdeDeus Não, até poucos dias não sabia que dava para perseguir (seguir) as pessoas no fórum.

Compartilhar este post


Link para o post
Compartilhar em outros sites
#include <stdio.h>  // Biblioteca para printf e scanf
#include <stdlib.h> //Biblioteca para o rand()
#include <time.h> // Biblioteca para srand(time(null))
#include <locale.h> 
#include <windows.h>
#include <conio.h>

// nesse programa irei criar um jogo da memória para dois jogadores, com pontuação indivudual

int contagem (int numeros[5], int respostas[5]);

int main()
{
    srand(time(NULL));//Altera o valor do rand() a cada inicialização do programa;
    // Essas são as variáveis que eu criei, jogo é a matriz com as respostas, contpar seira os acertos
    // c1, c2... serão as coordenadas digitadas pelo usuário, pos1, pos2... serão as posição aleatórias
    // para alocação dos pares de números na matriz jogo, e num será os numeros a formarem pares de 1 a 8
    // jogador dirá de quem é a vez no momento, e pont1 e 2 são as pontuações dos respectivos jogadores 1 e 2
    
    int jogo[4][4];
    int a, b, contpar, c1, c2, c3, c4, pos1, pos2, pos3, pos4, num = 1;
    contpar = 0;
    int jogador, pont1, pont2;
    jogador = 1;
    pont1 = 0;
    pont2 = 0;
    int numeros[5];
    int respostas[5];
    int i, j;
    char nome[50];
    char c;
    
    //Comando de regionalização;
    
    setlocale(LC_ALL, "Portuguese");
    
    //Título do programa;
    
    SetConsoleTitle("Jogo da memoria simples");
   
    srand(time(NULL)); //Semente para gerar os números aleatórios;
    
    printf("\n||================================================================================================||");
    printf("\n||                          BEM VINDO AO JOGO DA MEMÓRIA!!!                                       ||");
    printf("\n|| -> Olá! Por favor, digite seu nome e logo em seguida irá aparecer as regras do jogo.           ||");
    printf("\n|| -> DIVIRTA-SE!                                                                                 ||");
    printf("\n||================================================================================================||");
    //printf("\n Logo em seguida irá aparecer as regras do jogo. Divirta-se!\n\n");
    printf("\n\n -> Nome do Jogador: \n");
    scanf("%s", &nome);
    printf("\n||==============================================================================================================||");
    printf("\n|| REGRAS DO JOGO:                                                                                              ||");
    printf("\n|| Estas são as instruções que o jogador deve seguir:                                                           ||");
    printf("\n|| 1- Este programa irá gerar 5 números aleatórios entre 1 e 100.                                               ||");
    printf("\n|| 2- Você deve decorar os números exibidos em 10 segundos e depois escreve-los na ordem em que foram exibidos. ||");
    printf("\n||==============================================================================================================||");
    printf("\n");
    printf("\n -> Para iniciar, Pressione ENTER e bom jogo! :)\n");
    
    do{
        c = getch(); //Esperar o enter do usuário
    }while (c != 13);
    
    // com esse loop, o programa inicializará todos os elementos da matriz jogo com 0, o que nos
    // ajudará a posicionar os pares nessa mesma matriz no próximo passo
    for (a = 0; a < 4; a++)
    {
        for (b = 0; b < 4; b++)
        {
            jogo[a] = 0;
        }
    }
    
     j= 3; //Número desejado para contagem dos segundos;
   
    do{
        system ("cls"); //Limpa a tela
        printf ("-> Preparem-se!!! O jogo começa em %d!!!\n\n\n", j);
        j--; //Decrementação do j para que ele vire o valor antecessor dos números desejados para os segundos;
        for (i= 0; i< 4; i++){
            printf ("%d\t", numeros);
        }
        Sleep (1000); //Espero um segundo e volto para o loop;
        
    }while (j> 0); //Este loop vai acontecer enquanto j for maior que 0;
   
    // Esse loop é que vai atribuir os pares a matriz jogo. Ele gera quatro numeroa aleatórios de 0 a 3,
    // exatamente como podemos usar numa matriz 4x4. A primeira condição garante que serão atribuídos valores de 1 a 8
    // a espaços que não tenham sido preenchidos ainda. Considerando que o 0 é quando ele não foi preenchido, ele procura
    // duas posições que valem 0 e com a segunda condição, ele garante que as duas posições não serão iguais.
    // Quando ele acha duas posições que satisfazem essas condições, ele as preenchem com o número um, soma mais um a
    // a variável num, e procura duas coordenadas que ainda não tenham sido preenchidas
    
    system("cls");
    
    while (num <= 
    {
        pos1 = rand()%4;
        pos2 = rand()%4;
        pos3 = rand()%4;
        pos4 = rand()%4;
        
        if (jogo[pos1][pos2] == 0 && jogo[pos3][pos4] == 0)
        {
            if (pos1 != pos3 && pos2 != pos4)
            {
                jogo[pos1][pos2] = num;
                jogo[pos3][pos4] = num;
                num++;
            }
        }
    }
    // essa é a matriz que será mostrada para o usuário, que será preenchida toda com 0 e a medida que
    // o jogador acertar os pares, esses pares serem substituídos na matriz esc, até ser toda preenchida e o jogo acabar.
    int esc[4][4];
    
    for (a = 0; a < 4; a++)
    {
        for (b = 0; b < 4; b++)
        {
            esc[a] = 0;
            printf("%d ", esc[a]);
        }
        printf("\n");
    }
    /*
     for (a = 0; a < 4; a++)
     {
        for (b = 0; b < 4; b++)
        {
            printf("%d ", jogo[a]);
        }
        printf("\n");
     }
    */
    while (contpar <  // contpar foi inicializado com 0, ou seja, quando contpar/número de acertos chegar a 8, o jogo acaba
    {
        printf("Vez do jogador %d\n", jogador);
        printf("Entre com uma cordenada(max = 4 4): ");
        scanf("%d %d", &c1, &c2);
        printf("O número da posicao eh %d\n", jogo[c1 - 1][c2 -1]);
        printf("Entre com outra coordenada: ");
        scanf("%d %d", &c3, &c4);
        printf("O número da posicao eh %d\n", jogo[c3 - 1][c4 -1]);
        // com isso foi pedido as coordenadas para localizar os pares na matris jogo
        c1 = c1 - 1;
        c2 = c2 - 1;
        c3 = c3 - 1;
        c4 = c4 - 1;
        // essa parte do c1 = c1 - 1... é apenas um detalhe para facilitar na hora de digitar uma linha por coluna, é opicional
        
        // Aqui nós temos nossas condições, se o valor da coordenada 1 for = a da coordenada 2 Ele vai somar um ponto pro jogador da vez,
        // substituir o valor certo na matriz escondida, para o jogador ver os acertos e somar um ponto para o número de acertos. Depois ele vai
        // reimprimir a matriz esc com os pares acertaos impressos
        if (jogo[c1][c2] == jogo[c3][c4] && esc[c1][c2] == 0 && esc[c3][c4] == 0)
        {
            contpar++;
            esc[c1][c2] = jogo[c1][c2];
            esc[c3][c4] = jogo[c3][c4];
            if (jogador == 1)
            {
                pont1++;
            }
            else if(jogador == 2)
            {
                pont2++;
            }
            
            for (a = 0; a < 4; a++)
            {
                for (b = 0; b < 4; b++)
                {
                    printf("%d ", esc[a]);
                }
                printf("\n");
            }
        }
        else
        {
            printf("Errou, tente de novo\n");
            jogador++; // se o jogador errar ele perde a vez
        }
        
        // Aqui foi como eu fiz para o jogador ser apenas 1 ou 2, toda vez que o jogador erra, soma-se um a variável jogador
        // se o jog 1 erra, agora é o jog 2, porém se o jog 2 erra não vai para jog 3 porque com a condição abaixo, se jog > 2
        // subtrai-se 2 do numero, ou seja 3 - 2 = 1, e volta a ser a vez do jog 1.
        if (jogador > 2)
        {
            jogador = jogador - 2;
        }
        printf("Jogador 1: %d pts\nJogador 2: %d pts\n", pont1, pont2);
    }
    
    // aqui é apenas para dizer quem ganhou a partida
    if (pont1 > pont2)
    {
        printf("Jogador 1 Venceu");
    }
    else if (pont2 > pont1)
    {
        printf("Jogador 2 Venceu");
    }
    else
    {
        printf("Empatou u.u");
    }
    
    
   return 0;
}
int contagem (int numeros[5], int resposta [5]){
     for (int i= 0; i< 5; i++){
     }
 }

 

 

 

/*Modifiquei o código, e ele ficou assim! porém, aparece lixo de caracteres no meio da execução do codigo ( enquanto ele ta rodando ), o sr. sabe como posso retirar o lixo deste código?

O código tem uns printf para modificar e tudo mais, não está 100% pronto!*/

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!