Ir ao conteúdo
  • Cadastre-se

C++ Programa para sortear uma palavra


Ga_bryel

Posts recomendados

@Ga_bryel    você pode usar um gerador de números aleatórios de acordo com a quantidade de palavras que você queira sortear , e nesse caso aí são apenas duas , então gere um número de zero até hum , e você pode imprimir a palavra que esteja na posição indicada pelo número gerado pela função , numero = rand() % 2 ,  que resultará ou no número zero , ou no número hum , e imprimirá a palavra sorteada  , cout<<palavra[numero];

  • Amei 1
Link para o comentário
Compartilhar em outros sites

@devair1010 consegui fazer desse seu jeito. usei um laço for para ver se todas palavras estavam sendo selecionadas, mas percebi que algumas foram repetidas e outras nao apareceram. Usei 5 palavras.

 

int geradorDeNumero(int numero){
    
    char palavraSecreta[5][30]= {"Programacao","C++","Hello","Notebook","Relogio"};
    int palavras = 5;
    for(int i = 0;i < palavras; i++){
    numero = rand() %5;
    cout<<palavraSecreta[numero]<<endl;
    }
//criei essa função para executar o gerador
}

 

 

Captura de tela de 2020-02-22 12-15-39.png

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Ga_bryel Essa não é a melhor forma de sortear um numero mas e a mais rápida.

 

Aqui um exemplo de duas maneiras diferentes.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

/* Constantes */
#define Q_PALAVRAS 5
#define T_PALAVRAS 20

char *Sorteia(char p[][T_PALAVRAS],int quant)
{
  srand(time(NULL));
  return(p[rand()%quant]);
}

char *SorteiaAdv(char p[][T_PALAVRAS],int quant)
{
  int *vetor,indice;
  vetor=malloc(sizeof(int));
  for(indice=0; indice<quant; indice++)
    vetor[indice]=indice;
  srand(time(NULL));
  for(indice=0; indice<quant; indice++)
  {
    int aux1,aux2;
    aux1=rand()%quant;
    aux2=vetor[indice];
    vetor[indice]=vetor[aux1];
    vetor[aux1]=aux2;
  }
  indice=vetor[0];
  free(vetor);
  return(p[indice]);
}

int main(void)
{
  char palavras[Q_PALAVRAS][T_PALAVRAS];
  int a;
  char tecla;
  printf("\nDigite %i palavras para serem sorteadas.",Q_PALAVRAS);
  for(a=0; a<Q_PALAVRAS; a++)
  {
    printf("\n:\t");
    scanf("%s%*c",palavras[a]);
  }
  do
  {
    printf("\nA palavra sorteada foi:\t%s",Sorteia(palavras,Q_PALAVRAS));
    printf("\nA palavra sorteada foi:\t%s",SorteiaAdv(palavras,Q_PALAVRAS));
    printf("\nPressione S para sair ou qualquer outra tecla para continuar..\n:\t");
    scanf("%c%*c",&tecla);
  }while(tecla!='S'&&tecla!='s');
  return(0);
}

A função SorteiaAdv tem mais chances de sortear todos os nomes no vetor. (foi mal o C puro).

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Pode ser feito assim.

 

#include <iostream>
#include <string>
#include <ctime>

using namespace std;

int main()
{
    const int NUM_PALAVRAS = 5;
    const string PALAVRAS[NUM_PALAVRAS] = {
        {"Programacao"},
        {"C++"},
        {"Hello"},
        {"Notebook"},
        {"Relogio"}
    };

    srand(static_cast<unsigned int>(time(0)));
	int NUMERO = (rand() % NUM_PALAVRAS);
    string PALAVRASECRETA = PALAVRAS[NUMERO];

    int TAM = PALAVRASECRETA.size();

    for(int i = 0;i < TAM; i++) {
        int INDICE = (rand() % TAM);
        char TEMP = PALAVRASECRETA[INDICE];
        PALAVRASECRETA[INDICE] = TEMP;
    }

    cout << PALAVRASECRETA << endl;

    return 0;
}

 

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@Ga_bryel      repetiu por que precisa colocar o comando 

#include <ctime>
/* e dentro da função main coloque */  
srand( time( NULL ) );  /* só precisa uma vez em todo o programa */
numero = rand() % 5;  

então seu código poderia ser assim  :

#include <iostream>
#include <ctime>
using namespace std;
int geradorDeNumero(){
    int numero;
    char palavraSecreta[5][30]= {"Programacao","C++","Hello","Notebook","Relogio"};
    int palavras = 5;
    for(int i = 0;i < palavras; i++){
        numero = rand() % 5;
        cout<<palavraSecreta[numero]<<endl;
    }
}
int main(){
    int numero;
    srand(time(NULL));
    char palavra[2][30] = {"Programação","C++"};
    for(int j=0;j<10;j++){
        cout<<rand()%100<<" ";
    }
    numero = rand() % 5;
    cout<<"\n\ngerou a posicao da palavra\n"<<endl;
    cout<<palavra[numero]<<"\n\n"<<endl;

    geradorDeNumero();
    getchar();
    system("taskkill /IM cb_console_runner.exe");/* no codeblock funcionna */
    return 0;
}

e como vai gerar cinco números é bem provável que alguma palavra , se repita mesmo .

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!