Faça um programa em C para gerar apostas na Mega Sena com N dezenas (informada pelo usuário). Armazene os números gerados aleatórios no intervalo de 1 a 60 em um vetor. Lembre se que os N números precisam ser diferentes entre si, não podendo repetir o número adicionado no vetor.
Passo 1
Beleza, vamos lá! O que a gente precisa fazer aqui é criar um programa em C que gera apostas para a Mega Sena. O usuário vai informar quantos números ele quer (N), e a gente vai gerar N números aleatórios entre 1 e 60. Ah, e tem que garantir que nenhum número se repita na aposta, ok? Para isso, vamos precisar usar vetores para armazenar os números e funções para gerar números aleatórios e verificar se já existe algum número no vetor.
Passo 2
Primeiro, vamos começar incluindo as bibliotecas necessárias. Vamos precisar de
stdio.h
para entrada e saída, stdlib.h
para usar a função rand()
que gera números aleatórios, e time.h
para inicializar a semente do gerador de números aleatórios com base no tempo atual.#include <stdio.h>
#include <stdlib.h>
#include <time.h>
Passo 3
Dentro da função
main
, vamos declarar as variáveis que vamos precisar. Vamos ter uma variável N
para armazenar a quantidade de números que o usuário quer, um vetor numeros[60]
para guardar os números da aposta, e algumas variáveis auxiliares como i
, j
e um booleano repetido
para verificar se um número já foi sorteado.int main() {
int N;
int numeros[60];
int i = 0, j;
int num;
int repetido;
Passo 4
Agora, vamos solicitar ao usuário que informe quantos números ele quer na aposta. Também vamos fazer uma verificação para garantir que o número informado seja entre 1 e 60.
printf("Quantas dezenas você quer apostar (1 a 60)? ");
scanf("%d", &N);
if(N < 1 || N > 60) {
printf("Número de dezenas inválido!\n");
return 1;
}
Passo 5
Vamos inicializar o gerador de números aleatórios usando a função
srand()
com base no tempo atual. Isso garante que a sequência de números aleatórios seja diferente a cada execução do programa. srand(time(NULL));
Passo 6
Agora, vamos gerar os números aleatórios. Vamos usar um loop que continua até termos N números únicos no vetor. Dentro do loop, vamos gerar um número aleatório entre 1 e 60 e verificar se ele já existe no vetor. Se não existir, adicionamos ao vetor; se existir, geramos outro número.
while(i < N) {
num = rand() % 60 + 1; // Gera número entre 1 e 60
repetido = 0;
// Verifica se o número já foi sorteado
for(j = 0; j < i; j++) {
if(numeros[j] == num) {
repetido = 1;
break;
}
}
// Se não for repetido, adiciona ao vetor
if(!repetido) {
numeros[i] = num;
i++;
}
}
Passo 7
Por fim, vamos exibir os números gerados na tela, mostrando a aposta completa para o usuário.
printf("Sua aposta na Mega Sena é: ");
for(i = 0; i < N; i++) {
printf("%d ", numeros[i]);
}
printf("\n");
return 0;
}
Resposta
Aqui está o programa completo que gera apostas na Mega Sena com N dezenas sem repetir números:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int N;
int numeros[60];
int i = 0, j;
int num;
int repetido;
printf("Quantas dezenas você quer apostar (1 a 60)? ");
scanf("%d", &N);
if(N < 1 || N > 60) {
printf("Número de dezenas inválido!\n");
return 1;
}
srand(time(NULL));
while(i < N) {
num = rand() % 60 + 1; // Gera número entre 1 e 60
repetido = 0;
// Verifica se o número já foi sorteado
for(j = 0; j < i; j++) {
if(numeros[j] == num) {
repetido = 1;
break;
}
}
// Se não for repetido, adiciona ao vetor
if(!repetido) {
numeros[i] = num;
i++;
}
}
printf("Sua aposta na Mega Sena é: ");
for(i = 0; i < N; i++) {
printf("%d ", numeros[i]);
}
printf("\n");
return 0;
}
Esse programa vai pedir para você informar quantas dezenas quer apostar, gerará números aleatórios entre 1 e 60 sem repetir, e mostrará sua aposta na tela. Show de bola!
Exercícios relacionados
Faça um código para gerar 25 números aleatórios (entre 10 e 40 ) e armazenar em um vetor. Apresente os números gerados na tela e depois organize o vetor com o método de ordenação InsertionSort. Ao final, apresente o vetor ordenado.
Um amigo lhe diz que é capaz de ordenar qualquer conjunto de 6 números com no máximo 8 comparações. O seu amigo está falando a verdade ou mentindo? Justifique.
Faça um programa em C que leia 10 valores inteiros, armazeno-os em um vetor, calcule e apresente a soma destes valores.
Escreva um programa para converter uma cadeia de caracteres de letras maiusculas em letras minusculas. Dica: some 32 nos caracteres cujo codigo ASCII está entre 65 e 90 .