Ir ao conteúdo
  • Cadastre-se

C vetores e contadores de pontuação


Posts recomendados

Pessoal me ajuda numa questão de C.

 

Estou com uma questão de loteria.

A minha loteria é assim: 5 números de 1 a 60 e 1 numero (sexto) de 1 a 4.

 

Gerei um vetor X para gerar 5 números aleatórios entre 1 e 60 e um outro vetor Y para gerar 1 número aleatório entre 1 e 4.

 

ai ele armazenou os dois vetores (6 numeros) no .txt

 

No programa abaixo u estou lendo esse arquivo e após ler o arquivo ele printa na tela, e aí o programa me solicita os resultados oficiais do sorteio, os 5 números eu armazeno no vetor resultado e o sexto número eu armazeno no vetor cash, após isso o programa é para exibir o resultado oficial que acabei de digitar e dizer quantos números eu acertei.

 

Só que tem um porém, primeiro: Quando eu digito no resultado oficial o sexto numero que armazena no vetor ele printa o número 8 independente do que eu digitei e o segundo problema é que não consigo somar quantos eu acertei.

 

Me ajudem por favor!

 

 

<CODE>
#include<stdio.h>
#include<locale.h>
#include<time.h>
#include<stdlib.h>
#include<conio.h>
main()
{  int i,x[5],y[1],resultado[5],cash[1],pontos=0,j,k;
   FILE *arquivo;
   setlocale(LC_ALL,"Portuguese");
   if((arquivo=fopen("cash4life.txt","r"))==NULL) 
    printf("Erro na leitura do arquivo!\n");
     else
     { for(i=0;i<5;i++)  
       fscanf(arquivo,"%5d",&x[i]);
       for(k=0;k<1;k++)
       fscanf(arquivo,"%d",&y[k]);
     }
   printf("Este programa verifica quantos pontos foram feito no Clasico Loto do Chile.\n");
   printf("O arquivo jogo.txt tem o seguinte jogo armazenado\n");
   
   printf("\nVetor armazenado\n"); 
   printf("Números principais:");
   for(i=0;i<5;i++)
    printf("%3d ",x[i]);
    printf("\n\n");
    printf("Cash Ball:");
    for(k=0;k<1;k++)
    printf("%2d",y[k]);
    
   printf("\nDigite o resultado oficial do Clasico Loto do Chile\n"); 
   for(i=0;i<5;i++)
    scanf("%d",&resultado[i]);
   for(k=0;k<1;k++)
   printf("Digite o número do cash ball:");
   scanf("%2d",&cash[k]);
   
   printf("\nO resultado oficial do Clasico Loto do Chile foi:\n");
   printf("Números principais:");
   for(i=0;i<5;i++)
    printf("%6d",resultado[i]);
    printf("\n\n");
    printf("Cash Ball:");
    for(k=0;k<1;k++)
    printf(" %2d",cash[k]);
    
   for(i=0;i<5;i++)
    for(j=0;j<5;j++)
     for(k=0;k<1;k++)
      if(x[i]==resultado[j])
       pontos=pontos+1;
   printf("\n\n Você acertou %d pontos\n",pontos); 
   printf("\nFim.\n");
}

<CODE>

Link para o comentário
Compartilhar em outros sites

@Matheus Brian a única coisa que eu tenho a falar sobre o seu algoritmo é que ele não funciona, principalmente porque você não postou o arquivo de texto também.

 

Se você vai fazer um algoritmo de loteria não seria melhor gerar os números no programa ao invés pegá-los de um arquivo?

Se você decidir ir pelo caminho de gerar os números eu recomendo usar o algoritmo fisher-yates de embaralhamento.

Exemplo

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

#define T_DE1A60 60
#define T_DE1A4 4

int main(void)
{
    int de1a60[T_DE1A60], de1a4[T_DE1A4];
    int contador;
    /* Inicia os vetores */
    for (contador = 0; contador < T_DE1A60; contador++) {
        de1a60[contador] = contador+1;
    }

    for (contador = 0; contador < T_DE1A4; contador++) {
        de1a4[contador] = contador+1;
    }

    /* embaralha os vetores */
    srand(time(NULL));      /* Inicia o gerador de numeros */

    for (contador = 0; contador < T_DE1A60; contador++) {
        int tmp = de1a60[contador], indice = rand()%T_DE1A60;
        de1a60[contador] = de1a60[indice];
        de1a60[indice] = tmp;
    }

    for (contador = 0; contador < T_DE1A4; contador++) {
        int tmp = de1a4[contador], indice = rand()%T_DE1A4;
        de1a4[contador] = de1a4[indice];
        de1a4[indice] = tmp;
    }

    /* Sorteia 6 numeros */
    printf("Sorteia 6 numeros de %d\n", T_DE1A60);
    for (contador = 0; contador < 6; contador++) {
        printf("%d, ", de1a60[contador]);
    }

    printf("\nMostra o vetor de %d numeros\n", T_DE1A4);
    for (contador = 0; contador < 4; contador++) {
        printf("%d, ", de1a4[contador]);
    }
    getchar();
    return(0);
}

 

Outro ponto critico no seu algoritmo e a escolha de nomes para variáveis, não escolha coisas como 

	int x[5], j, k;

O que o X faz? ou o J?

Escolha nomes mais representativos como

	int vetor_de_5[5], contador, temp;

É tenha a boa pratica de indentar o código, configure o seu editor para pelo menos 2 espaços. 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!