Ir ao conteúdo

C++ Do while com booleand em C++ parando quando encontrar os valores pré-definidos


Ir à solução Resolvido por devair1010,

Posts recomendados

Postado

Bom dia, preciso de ajuda com um programa teste. Ele é tipo mega sena, sorteia 6 números aleatórios entre 1 e 60, mas gostaria que ele parasse o loop infinito ao encontrar os números mensurados anteriormente...

Segue a minha ideia...

 

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <fstream>
#include <iostream>
using namespace std;
int resp;


void ordenar_num(int num[6]) {

    int i, j, aux;
    
    for (i = 0; i < 6; i++)
    {
        for (j = i + 1; j <= 5; j++)
        {
            if (num[j] < num[i])
            { 
                aux = num[i];
                num[i] = num[j];
                num[j] = aux;
            }
        }
    }

    printf("RESULTADO: \n\n\n ");
    
    for (i = 0; i < 6; i++) {
        printf("%i \t", num[i]);
    
    }
    printf("\n");
        
}

int main() {
    ofstream out ("teste.txt");
    int i, j,num, numero[6];
    srand(time(0));
    bool childUpset = true;
do{
    for (i = 0; i < 6; i++) {
        numero[i] = rand() % 60+1;
    }

    
    for (i = 0; i < 6; i++)
    {
        for (j = i + 1; j <= 5; j++)
        {
            do {
                if (numero[j] == numero[i])
                {
                    numero[i] = rand() % 60+1;
                }
            } while (numero[j] == numero[i]);
        }
    }

    printf("Antes da Organizacao: \n\n\n");
    //sortear os numeros
    for (i = 0; i < 6; i++) {
        printf(" %i \t", numero[i]);
        
    }
    printf("\n");
    
    ordenar_num(numero);



//Aqui seria a condição de parar o looping...
   /* for (numero[i] = 7, numero[i] = 11, numero[i] = 19, numero[i] = 25, numero[i] = 35; numero[i] = 60; i++)
    {
        
        break;
    }*/

    printf("\t\nDigite 1 para repetir \n");
    printf("\n");
    
    //scanf("%d", &resp);
    
{
printf (" %i \t", numero[i]);
}
}while     (childUpset == true); 

    
    system("PAUSE");
    out.close();
    return 0;
}

 

Desde já agradeço a ajuda de vocês!
 

  • Obrigado 1
  • Membro VIP
Postado

você diz, incrementar a contagem de no máximo 6 números só se o criado naquele momento for diferente de todos criados anteriormente?

Se sim, você pode usar minha pergunta pra criar o algoritmo?

  • Curtir 1
  • Solução
Postado

@Genlath    para que o loop termine você precisa estipular uma condição ,  e você colocou uma o "childUpset" do tipo bool ,  então você pode usar um contador de quantos jogos você quer que sejam gerados ,  e ao atingir esse valor a variável childUpset receba o valor false ,  e seu código modificado ficou assim  :

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <fstream>
#include <iostream>
using namespace std;
void ordenar_num(int num[6])
{
    int i, j, aux;
    for (i = 0; i < 6; i++)
    {
        for (j = i + 1; j <= 5; j++)
        {
            if (num[j] < num[i])
            {
                aux    = num[i];
                num[i] = num[j];
                num[j] = aux   ;
            }
        }
    }
    printf("RESULTADO organizado --:  ");
    for (i = 0; i < 6; i++)
    {
        printf("%2d - ", num[i]);
    }
    printf("\b\b \n");
}
int main()
{
    ofstream out ("teste.txt");
    int i, j,num, numero[6];
    int qtd,cont=0,flg;
    printf("a Qtd de cartoes ");
    scanf("%d",&qtd);
    printf("Gerando os bumeros\n\n");
    srand(time(0));
    bool childUpset = true;
    do
    {
        printf("Antes da Organizacao --:  ");
        for (i = 0; i < 6; i++)
        {
            do
            {
                numero[i] = rand() % 60+1;     /// gera numeros de 1 ate 60
                int flg=0;                     /// marca como nenhum repetido
                for(j=0; j<6; j++)
                {
                    if(numero[i] == numero[j]) /// verif o num gerado com todos no vetor
                    {
                        flg=1;                 /// marca como repetido
                        break;                 /// sai desse loop for j
                    }
                }
            }while( flg == 1);                 /// repete se houver algum repetido no vetor
            printf("%2d - ", numero[i]);
        }
        printf("\b\b \n\n%2d Jogo\n",cont+1);
        ordenar_num(numero);
        printf("\n");
        cont += 1;                            /// incrementa o contador
        if(qtd == cont)                       /// se for igual a qtd pedida
            childUpset = false;               /// marca como false
    }while(childUpset == true);               /// condicao de sair do loop é false
    system("pause");
    out.close();
    return 0;
}

 

Postado

@.if era gerar X vezes o resultado até chegar a condição dos número sitados.... fazer o looping até que chegue a condição dos número.

@devair1010 Boa noite meu amigo! Muito obrigado! Era essa condição que não estava conseguindo acertar. Muito obrigado!

  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!