Ir ao conteúdo
  • Cadastre-se
Josesousa

C Matriz tridimensional em C. Loteria

Recommended Posts

Olá, tudo bem?

Será que podem me ajudar num exercicio aqui. É o seguinte: 

Escreva um algoritmo que leia um vetor de 13 elementos, que é o Gabarito de um teste da loteria esportiva, contendo os valores 1(coluna 1), 2 (coluna 2) e 3 (coluna do meio). Leia, a seguir, para cada apostador, o número do seu cartão e um vetor de Respostas de 13 posições. Verifique para cada apostador  o números de acertos, comparando o vetor de Gabarito com o vetor de Respostas. Escreva o número do apostador e o número de acertos. Se o apostador tiver 13 acertos, mostrar a mensagem "Ganhador".

 

Eu consegui resolve-lo, mais pegando as respostas de apenas um apostador. Segue o codigo:

/*14. Escreva um algoritmo que leia um vetor de 13 elementos, que é o Gabarito de um teste da loteria
esportiva, contendo os valores 1(coluna 1), 2 (coluna 2) e 3 (coluna do meio). Leia, a seguir, para cada
 apostador, o número do seu cartão e um vetor de Respostas de 13 posições. Verifique para cada apostador
  o números de acertos, comparando o vetor de Gabarito com o vetor de Respostas. Escreva o número do apostador
   e o número de acertos. Se o apostador tiver 13 acertos, mostrar a mensagem "Ganhador".*/
#include <stdio.h>
#include <stdlib.h>
main (){
    int vet[13],i, j,num,res[13], cont=0, cartao;
    char voltar[5];

    printf("Informe o cartao resposta.\n");
    for(i=0;i<13;i++){
        printf("Vetor [%d]: ", i);
        scanf("%d", &vet[i]);
    }
   /* printf("Informe o numero de apostadores: ");
    scanf("%d", &num);
    for(i=0;i<num;i++){
        printf("Informe o numero do %d apostador: ", i);
        scanf("%d", &cartao);
        for(j=0;j<13;j++)
        printf("Informe o suas respostas : ");
        scanf("%d", &res[i]);
    }*/

    printf("Informe o numero do cartao do apostador: ");
    scanf("%d", &cartao);
    printf("Informe suas respostas!\n");
    for(i=0;i<13;i++){
        printf("resposta [%d]: ", i);
        scanf("%d", &res[i]);
    }

    for(i=0;i<13;i++){
        if(res[i]==vet[i])
            cont++;
    }
    if(cont!=13)
        printf("Nao tem vencedor!\n");
    if(cont==13)
        printf("O vencendor e o do cartao numero %d!\n", cartao);

system("pause");
return 0;
}

Mas eu queria saber como consegui colocar mais apostadores. E pedir a quantidade de pessoas que realizou as apostas para o usuario. 

Fiquei aqui pensando se nao e uma matriz tridimensional.

 

Segue outro codigo que estava desenvolvendo, mas parei.

#include <stdio.h>
#include <stdlib.h>
main (){
    int gab[13],tam=5, mat[tam][13];
    int i, j;
    printf("Entre com o gabarito: ");
    for(i=0;i<13;i++){
        printf("Gabarito [%d]: ", i);
        scanf("%d", &gab[i]);
    }
    printf("Informe a quantidade de pessoas que realizou a aposta: ");
    scanf("%d", &tam);
    printf("\nEntre com os valores da aposta.\nInformando o cartao e depois a rasposta.\n");
    for(i=0;i<tam;i++){
        for(j=0;j<13;j++){
            printf("Matriz [%d][%d]: ");
        scanf("%d", &mat[i][j]);




           /* if(j==0){
                printf("Informe o numero do cartao: ");
                scanf("%d", &mat[i][j]);
            }
            else{
                printf("Respostas: ");
                scanf("%d", &mat[i][j]);
            }*/
        }
    }
   /* int k=0,cont=0;
    for(i=0;i<tam;i++){
        for(j=0;j<=13;j++){
            for(k=0;k<13;k++){
                if(mat[i][j]==gab[i]&& j!=0){
                    cont++;
                }
            }
        }
    }*/


system("pause");
return 0;
}

E ai? Alguma dica para tridimensionais?

Editado por Josesousa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

sys_loteria


0) Escreva um algoritmo que leia um vetor de 13 elementos, que é o Gabarito de um 
   teste da loteria esportiva. Contendo os valores 1(coluna 1), 2(coluna 2) e 
   3(coluna do meio). 
 
1) Leia, a seguir, para cada
   apostador, o número do seu cartão e um vetor de Respostas de 13 posições. 
   
2) Verifique para cada apostador
   o números de acertos, comparando o vetor de Gabarito com o vetor de Respostas. 

3) Escreva o número do apostador
   e o número de acertos. Se o apostador tiver 13 acertos, mostrar a mensagem 
   "Ganhador".

  • Aqui acima só sistematizo nosso problema, nada mais.

 

Dividir e conquistar: Boa parte dos problemas podem ser resolvidos dentro e somente na main, existem linguagens de um só método, já com relação a C nem sempre isso é uma boa ideia. Já parou para pensar o porquê de ficar tão difícil a medida que somou mais uma questão ao problema, apesar do problema não ser nada ruim, você chegou no seu dilema rápido de mais se comparada a complexidade do sistema na questão. Dentre muitas coisa ..., eu humildemente atribuo isso a falta métodos gerais: Online GDB: sys_loteria

Editado por AnsiC
Fazendo do português algo mais legível

Compartilhar este post


Link para o post
Compartilhar em outros sites

@AnsiC Minha maior duvida era em relação a quantidade de apostadores, e ao cartao do apostador. No caso voce já atribuiu valores diretos para cada apostador  e tambem ja definiu a quantidade dos mesmos.

Eu pretendia resolver o exercicio com uma matriz, inserido o cartao e as respostas nela, tanto que perguntei sobre matriz tridimensionais.

Sobre usar funções, aprendi a pouco tempo, mas estou passando a usar mais elas. Mas nao aprendir ponteirios ainda. Me parece que voce usou, não sei bem.

Se reparar o primeiro codigo que postei, eu consigo mostrar o vencedor, na qual so tem duaspossibilidade:  o único apostador ganhou ou não ganhou.

Será que com uma struct da para resolver o problema? (O professor nao explicou ainda, mas já de uma olhada na internet)

 

Valeu amigo. :)

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Foi para nós, é uma situação hipotética, o cerno do código é sua estrutura de funções; Procedimentos é tudo. Tem muito sobre matrizes e ponteiros na internet. Deixe de desculpas e aprende ponteiros.

 

 

De nada, @Josesousa

Em 21/06/2018 às 13:10, Josesousa disse:

Valeu amigo. :)

 

Editado por AnsiC
De acorda com Regra Gerais 1.2
  • Confuso 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
10 minutos atrás, AnsiC disse:

Deixe de desculpas e aprende ponteiros.

Já dei uma olhada em ponteiros, tentei resolver uns exercicios que fazia uso dele. Mas aprender na internet (difícil achar algo de qualidade) não é tão fácil assim não amigo, aprende mais demora. Não é desculpas não.

  • Haha 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 minutos atrás, Josesousa disse:

Já dei uma olhada em ponteiros, tentei resolver uns exercicios que fazia uso dele. Mas aprender na internet (difícil achar algo de qualidade) não é tão fácil assim não amigo, aprende mais demora. Não é desculpas não.

  • Eu sei !!! Qualquer coisa, conte com nosso fórum e desenvolva postagens sobre os temas que queria discutir, depois volte.

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

×