Vitera148 Posted June 7, 2020 Posted June 7, 2020 Olá Pessoal! Estou fazendo um código em c++ que simula uma loteria, o usuário entra com 6 números inteiros, o código mostra os números em uma matriz 6x10, realiza o sorteio e mostra quanto números o usuário acertou. Estou com dificuldades para gerar a matriz, alguém pode me ajudar? A matriz deve ficar dessa ser impressa em uma forma similar a essa [Cartão de aposta]: -->Informe o 1 Número: 17 -->Informe o 2 Número: 01 -->Informe o 3 Número: 22 -------------------------- CARTÃO RESPOSTA -------------------------- 01 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 17 -- -- -- -- 22 -- -- -- -- -- -- -- -- Eis o código que tenho até agora: #include <string> #include <iostream> #include <algorithm> #include <iterator> #include <set> const size_t amount = 6; typedef std::set<int> bilhete_t; bilhete_t NumerosUsuario() { bilhete_t bilhete; while (bilhete.size() < amount) { std::cout << "\n Por Favor entre com o numero " << (bilhete.size()+1) << ":"; int entry; if(std::cin >> entry) { if(entry >= 1 && entry <= 60) { if (bilhete.end() != bilhete.find(entry)) std::cout << "Numero duplicado " << entry; else bilhete.insert(entry); } else std::cout << "Numero fora do intervalo [1..60]: " << entry; continue; } std::cin.clear(); std::string discard; std::cin >> discard; std::cout << "Bad input '" << discard << "' discarded"; } return bilhete; } bilhete_t NumerosSorteados() { bilhete_t bilhete; while (bilhete.size() < amount) bilhete.insert(rand() % 40 + 1); return bilhete; } std::ostream& operator<<(std::ostream& os, bilhete_t const& t) { std::copy(t.begin(), t.end(), std::ostream_iterator<int>(os, "; ")); return os; } int main() { std::cout << "LOTERIA MEGA MALUCA:" << std::endl; std::cout << "---------------------------" << std::endl; std::cout << " 1) Jogar a Loteria " << std::endl; std::cout << " 2) Sair do programa " << std::endl; std::cout << "Por Favor faca uma selecao: "; char choice; std::cin >> choice; switch(choice) { case '1': { std::cout << "\n Por Favor, digite o seu nome: "; std::string name; std::cin >> name; const bilhete_t user = NumerosUsuario(); const bilhete_t winning = NumerosSorteados(); std::cout << "Bilhete do Usuario: " << user << "\n"; std::cout << "Bilhete vencedor: " << winning << "\n"; // Checa se venceu? bool ok = 0 == std::lexicographical_compare( user.begin(), user.end(), winning.begin(), winning.end()); std::cout << "Resultado da aposta: " << (ok? "VENCEDOR":"Nao foi dessa vez") << "\n"; } case '2': return 0; default: std::cout << "\n Essa nao e uma escolha valida." << std::endl; } std::cin.ignore(1<<24,'\n'); std::cout << "\n Pressione enter..."; std::string dummy; std::getline(std::cin, dummy); }
zthiagovalle Posted June 8, 2020 Posted June 8, 2020 olá vitera, não sei se entendi direito a sua dúvida, mas fiz um código em C em que imprimo os números na ordem correta simulando uma matriz 6x10, olha o resultado Olha o código que fiz, espero que tenha te ajudado em algo 1 #include <stdio.h> 2 3 void main(){ 4 5 int vet[3] = {7,16,35}; 6 7 int i,j,n = 1, x = 0; 8 // i = linha, j = coluna, n = vai ser o número que vai simular os 60 números da cartela 9 // x = vai ser o indice do vetor para comparar com o n 10 for(i = 1; i <=6; i++){ 11 for(j = 1; j<=10; j++){ 12 if(n == vet[x]){ 13 printf("%d", n); 14 x++; 15 } 16 else{ 17 printf("-"); 18 } 19 n++; 20 } 21 printf("\n"); 22 j = 1; 23 } 24 } abraços
Vinicius Antunes Osti Posted June 15, 2020 Posted June 15, 2020 Dei uma olhada bem por cima no código. Algumas dicas, baseando-se que você está tentando imprimir a cartela com a sobrecarga do operador <<: 1. Quando copiar/colar ou adaptar um código encontrado na internet, tente entender o que o código faz. Sobrecarregar o operador << me parece ser uma tentativa de matar uma formiga com um revólver. Não tente dar um passo maior que a perna. 2. Uma solução simples e fácil de implementar envolveria um uso cuidadoso de um único laço for, do operador de resto de divisão inteira (%) e de funções do cabeçalho iomanip. Depois de entender como você quer a sua saída e como pode implementá-la, aí sim, tente fazer generalizações baseadas em recursos mais avançados de C++.
Recommended Posts
Archived
This topic is now archived and is closed to further replies.