Ir ao conteúdo
  • Cadastre-se
Pablo Fernandes

C Mega sena em C

Recommended Posts

Olá sou novo aqui estou fazendo um codigo da mega sena que ler o resultado e retira o arquivo do vetor o caso que minha matriz não esta recebendo os valores e não consigo ver o erro

OBS: sou iniciante em C

 

#include<stdio.h>
#include<stdlib.h>
#include<time.h> //biblioteca de tratamento de time
#include<string.h>
int matrizp();
int addvalormega();
int gravartxt();
int plinha();
//int mesplinha ();
int pmat();

 

 int mat[6][10], vet[6], semat[52][6], i, linha=0,coluna=0, maior=0,menor=0;

 

int main(){
    
  

    
    
    int escolha=-1, m;
        matrizp();
    while(escolha!=0){
        printf("Digite as opções\n");
        printf("1-Fazer os sorteios do ano \n");
        printf("2-Numero mais repetido e menos repetido da 1° linha da cartela\n");
    //    printf("3-Numero que mais sai e que menos sai em cada mes do ano em cada linha da cartela\n");
        printf("4-sair\n");
        scanf("%d",&escolha);
        
        switch(escolha){
            case 1:
                system("cls");
                for (m=0;m<10;m++)
                {addvalormega();
                 gravartxt();
                }
                break;
            case 2:
                system("cls");
                plinha ();
                break;
            case 3:
                system("cls");
            //    mesplinha();
                break;
        
            case 4:
                system("cls");
                escolha=0;
                break;
                
                
        }
        
    }
    matrizp();
}

int matrizp(){
    int a=1;
    //ponteiro de arquivos para gravar a base de matriz
    FILE *vmegasena; 
    
    // minha string terá no máximo 500 caracteres
  char palavra[52]; 
 
  //abrindo o arquivo com tipo de abertura "w" ele escreve mas sobrepõe, mas usando "a" ele escreve acrescentando dados ao fim do arquivo ou cria se nao existir ainda
  vmegasena = fopen("valordamega.txt", "w");
  
  
  for(  i=1;i<=6;i++){
        for(int j=1;j<=10;j++){
            mat[j]=a++;
        }
    }
    
  //medidas de prevencao de erros
   if(vmegasena == NULL) {
     printf("Erro na abertura do arquivo!");
     return 1;
  }
  else{
      for( i=1;i<=6;i++){
        printf("\n");
        for(int j=1;j<=10;j++){
        
              printf("%d \t",mat[j]);
                  //usando fprintf para armazenar a string no arquivo
              fprintf(vmegasena, "%d\t", mat[j]);//funcao que grava dados no arquivo
        }
    }
  }
  
  //usando fclose para fechar o arquivo
  fclose(vmegasena);
    
}
int addvalormega(){
    int recebetempo=0,semana=0;
    printf("Digite a semana: ex :1-10 \n");
    scanf("%d",&semana);
    srand(time(NULL));//a funcao rand ou sort rand e gerada a partir de um tempo que ele escolhe por isso inicia time null
    
    for( i=0;i<6;i++){
        recebetempo = rand()%60;
        if(recebetempo%2==0){
            vet=(recebetempo);
            pmat();
        }
        else{
                vet=(recebetempo);
                pmat();
        }
        printf("%d \t",vet);
    }    
    
    
}
int gravartxt(){
    FILE *semana;
    char ns[52];

    printf("Digite\n");
    scanf("%s.txt",ns);
    strcat(ns, " semana.txt");
    semana = fopen(ns, "a");
    
    for( i=0;i<6;i++){
        fprintf(semana, "%d \t", vet);
    }
    
    fclose(semana);
    
}
int plinha(){
    int j, x,cont=1, v1[10], maior=0, menor=500;
    for(x=0;x<52;x++)
    { for(j=0;j<6;j++)
       { printf("%d \t",semat[x][j]);
       }
    }
    for (x=0;x<10;x++)
    { v1[x]=0;
    }
    while(cont<11)
    { for(x=0;x<52;x++)
      { for(j=0;j<6;j++)
       { if(semat[x][j]==cont)
         {v1[cont]=v1[cont]++ ; //ou seja, se aquele número tiver sido sorteado alguma vez eu incremento o vetor que depois será usado para descobrir quais numeros foram mais e menos usados
         }
        }
      }
      cont++;
    }
    
    
    for(x=0;x<10;x++)
    { if(v1[x]<menor)
      { menor=vet[x];
      }
      if (v1[x]>maior)
      { maior=vet[x];
      }
    }
    printf("\n O mais sorteado foi %d e o menos sorteado foi %d", maior,menor);    
    
}

int pmat()
{ if(coluna<6)
  { semat[linha][coluna]=vet;
  }
  else
  { coluna=0;
    linha++;
    semat[linha][coluna]=vet;
  }
  coluna++;
}

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Pablo Fernandes Não seria melhor fazer um array de [60] em vez de uma matriz? Você pode usar o resto de divisão % para achar uma "linha".

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Pablo Fernandes       no loop que insere valores na matriz eles estão começando em 1 mas teria que começar de zero e indo até enquanto for menor que 6 pois na matriz não tem a posição 6 e sim as posições de zero até 5, e o a++ não surtirá o efeito que você pretende pois não será incrementado, então você precisa colocar para incrementar esse a antes de colocar na matriz assim :

a++;
mat[i][j]=a;

 

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

×