Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Leonardo Porfírio

Programa Sorteio

Recommended Posts

olá galera beleza ,preciso de ajuda estou tentado fazer um programa de sorteio.

 

Fazer um programa que pede para o usuário digitar 16 números aleatórios sem repetição, e depois mostra o valores sorteados com o numero de acerto .estou fazendo mas encontro dificuldades ,de uma olhada no código como esta.

 

 

#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>
 
main(void)
{     
 int vetnum[16];//vetor para armazenar 16 numeros
 int vetnumaux[16];// ={1,2,3,4,5,6,7};//vetor auxiliar  pensei em fazer para poder armazenar o valores iguais ao numero do sorteio
 int numero[6];
 int i,j,aux=0;//variavel cotadora,e auxiliar
// int repetidos = 1; //
 int encontrei=0;//variavel usada para  somar os numeros encontrados
 srand(time(NULL));
 //magic =rand() %100;//isolei esta linha por que nao estava funcionando....resolvi colocar depois de um for que fiz
 i=1;//inicio em 1 os contadores para poder mostar o valor do contador na hora de imprimir...
 j=1;//
// printf("numero %d\n",magic);
 
   puts("----------------------------------------------------");//comando que vi na internet para poder trabalhar com string
   puts("\t \t MEGA SENA");
   puts("----------------------------------------------------");
   
    for (i = 1; i <17;i++){ // inicio do laço de repeticao para percorer o vetor
        printf("informe o numero  %d: \t",i);
        scanf("%d", &vetnum[i]);//armazeno  no vetor os valores digitados
  
    } //final do laço que percorre  o vetor
 
     puts("----------------------------------------------------");
     puts("\t OS NUMEROS SORTEADOS SAO");
     puts("----------------------------------------------------");    
     
   for(i=1; i<7; i++){//inicio laço usado para gerar o 6 numeros sorteados aleatoriamente
      numero[i] = rand()%59 +1;//defino a limitação da faixa de numeros até o 60 ,coloquei o + 1 para poder gerar +1 aleatorio...
      printf("%d\t ", numero[i]);//exibe quais foram os números sorteados
    // printf("%d \t",vetnum[i]);//testei  para verificar os valores que contem no vetor .....  
   }//fim da laço para gerar os numeros 
 
//----------------------------parte final mostrar os numeros que digitadosque são iguais ao sorteados ------------
 
   for(i = 0; i < 7; i++){// percorro a matriz para ver se o valor esta na mesma
    if(vetnum[i] == numero[i]){  //comparo se algum  numero do vetor é igual ao sorteado   
     //  encontrei= 1; // 
       encontrei++;  //  Se achar o valor atribui +1     
     }    
   }//Fim do laço para procurar o vetor....
   
   /* //incio do case testei ,mas achei melhor tirar....
   switch(encontrei){
        case 6 : printf(" \t VOCE ACERTOU 6 NUMEROS  ");  
        break;
        case 5 : printf(" \t VOCE ACERTOU 5 NUMEROS  "); 
        break; 
        case 4  :printf(" \t VOCE ACERTOU 4 NUMEROS  ");  
        break;
        default :printf(" \n VOCE Nao ACERTOU A QTD NECESSARIA....")  ;                                       
   }//final case
  */   
      if(encontrei ==3){//  inicio das verificações  para mostar o resultado obtido 
     //{
       printf("\n \n ");  
       puts("----------------------------------------------------"); 
       printf("\n \n");          
       printf(" \t VOCE ACERTOU 4 NUMEROS  ");
       printf("\n \n ");  
       printf(" %d \t ",vetnumaux[j]);   
      }  
      else if (encontrei ==5){
       printf("\n \n");
       puts("----------------------------------------------------");
       printf("\n \n");
       printf(" \t VOCE ACERTOU 5 NUMEROS  ");
       printf("\n \n ");  
       printf(" %d \t ",vetnumaux[j]); 
      }
       else if (encontrei ==6){
       printf("\n \n");
       puts("----------------------------------------------------");
       printf("\n \n");
       printf("PARABENS.....:::VOCE ACERTOU os 6 NUMEROS.....::::");
       printf("\n \n "); 
       printf(" %d \t ",vetnumaux[j]); 
     }
     else{
       printf("\n\n");
       puts("-----------------------------------------------------");
       printf("\n \n");
       printf(" \t NAO ACERTOU A QTD NECESSARIA ");
       printf("\n\n");
       printf( "%d \t",vetnumaux[j]);   
     }
     
       printf("\n\n");
       system("pause"); 
       return(0);         
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_PALPITES 16
#define MAX_SORTEIO 6
#define LIMIT_SORTEIO_SUP 100

int palpite_repetido(const int palpites[MAX_PALPITES], int informado, int lidos) {
   int i = 0;
   while (i < lidos && informado != palpites[i]) i++;
   return i<lidos;
}

int sorteio_repetido(const int sorteio[MAX_SORTEIO], int sorteado, int lidos) {
   int i = 0;
   while (i < lidos && sorteado != sorteio[i]) i++;
   return i<lidos;
}

void entrada(int palpites[MAX_PALPITES]) {
   printf("Informe %d números sem repetição.\n", MAX_PALPITES);

   int contagem = 0;
   int tmp_entrada = 0;
   while (contagem < MAX_PALPITES) {
      printf("%dº número:", contagem+1);
      scanf("%d", &tmp_entrada);
      if (palpite_repetido(palpites, tmp_entrada, contagem))
         printf("Número já informado. Escolha outro.\n");
      else
         palpites[contagem++] = tmp_entrada;
   }
}

void sortear(int sorteio[MAX_SORTEIO]) {
   int contagem = 0;
   int tmp_sorteio = 0;
   while (contagem < MAX_SORTEIO) {
      srand(time(NULL));
      tmp_sorteio = rand()/(RAND_MAX/LIMIT_SORTEIO_SUP + 1);
      if (!sorteio_repetido(sorteio, tmp_sorteio, contagem))
         sorteio[contagem++] = tmp_sorteio;
   }
}

int verificar_acerto(const int sorteio[MAX_SORTEIO], int n) {
   int i = 0;
   while (i < MAX_SORTEIO && n != sorteio[i]) i++;
   return (i<MAX_SORTEIO)?1:0;
}

int contar_acertos(const int palpites[MAX_PALPITES], const int sorteio[MAX_SORTEIO]) {
   int contagem = 0;
   for(int i=0; i<MAX_PALPITES; i++)
      contagem += verificar_acerto(sorteio, palpites[i]);
   return contagem;
}

void exibir_sorteados(const int sorteio[MAX_SORTEIO]) {
   for(int i=0; i<MAX_SORTEIO; i++)
      printf("%d%s", sorteio[i], (i==MAX_SORTEIO-1)?"":" - ");
   puts("");
}
int main(void) {
  int palpites[MAX_PALPITES];
  int sorteio[MAX_SORTEIO];
  entrada(palpites);
  puts("Sorteando números...");
  sortear(sorteio);
  puts("Números sorteados:");
  exibir_sorteados(sorteio);
  printf("Número de acertos: %d", contar_acertos(palpites, sorteio));
  return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.