Gerando números para Mega-Sena com C++

Uma forma mais moderna e profissional de fazer com C++ .


Gerando números para Mega-Sena com C++

Nesse cpp::daily de hoje vamos mostrar uma forma mais moderna e profissional de fazer isso com C++.

Nós já fizemos isso em outras situações com: C e também com Shell Script, mas além daqueles códigos estarem defasados, vamos atualizar isso com C++, e se você jogar e ganhar, lembre-se de me dar pelo menos 1% do seu ganho! 😃

O processo é bem simples quando usamos as ferramentas certas e elas são:

Primeira coisa é criar os 6 números randômicos. Basta criar um vector vazio, fazer um loop while onde a condição é adicionar o número randômico gerado por randint na faixa de 1 à 60 que são os números máximos da Mega-Sena e nos mostrar fazendo um loop para exibir, e pode ser feito com esse código inicial:

#include <iostream>
#include <ctime>
#include <experimental/random>
#include <vector>

int main(){
  std::srand(std::time(nullptr));

  std::vector<int> nums;

  // geramos os números
  while( nums.size() < 6 ){
    nums.push_back( std::experimental::randint(1,60) );
  }

  // exibimos os números
  for( auto &y : nums ){
    std::cout << y << ' ';
  }

  std::cout << '\n';
  return 0;
}

Mas o problema desse código é que números poderão ser repetidos e isso não é legal. Então, pra resolver isso vamos verificar se o número está no nosso vector e se não estiver incluímos, senão repete até não encontrar, para isso usaremos o std::find da biblioteca algorithm e agora armazenaremos o número randômico na variável x:

#include <iostream>
#include <ctime>
#include <experimental/random>
#include <vector>
#include <algorithm>

int main(){
  std::srand(std::time(nullptr));
  int x;
  std::vector<int> nums;

  while( nums.size() < 6 ){
    x = std::experimental::randint(1,60);
    if( std::find( nums.begin(), nums.end(), x ) != nums.end() ){
      continue;
    }else{
      nums.push_back( x );
    }
  }

  for( auto &y : nums ){
    std::cout << y << ' ';
  }


  std::cout << '\n';
  return 0;
}

Quase perfeito, a única coisa que precisamos alterar é exibir os números em ordem crescente pra ficar mais profissa mesmo, né não?! Então vamos de std::sortstd::sort( nums.begin(), nums.end() ); :

#include <iostream>
#include <ctime>
#include <experimental/random>
#include <vector>
#include <algorithm>

int main(){
  std::srand(std::time(nullptr));
  int x;
  std::vector<int> nums;

  while( nums.size() < 6 ){
    x = std::experimental::randint(1,60);
    if( std::find( nums.begin(), nums.end(), x ) != nums.end() ){
      continue;
    }else{
      nums.push_back( x );
    }
  }

  std::sort( nums.begin(), nums.end() );

  for( auto &y : nums ){
    std::cout << y << ' ';
  }

  std::cout << '\n';
  return 0;
}

Agora sim está tudo completo, show né?! Se quiser ainda deixe a condição do if else como ternária pra ficar like a boss!.


Por hoje é só, são pequenas doses diárias que farão sempre nos manter antenado com o C++ !

Acompanhe o cpp::daily

Deseja aprender C++ e criar seus programas Gráficos e para Terminal com portabilidade para Linux e Windows?

Então se inscreva nos nossos Cursos de C++ Moderno . Você aprender criar:

Acesse o endereço:

https://terminalroot.com.br/cpp/ e saiba mais!


cpp cppdaily


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo

Artigos Relacionados




Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!