Ir para conteúdo
Fórum Script Brasil
  • 0

ajuda em C++ função rand


andressac

Pergunta

Pessoal estou precisando de ajuda com esse codigo, ele está com erro que não consigo identificar. Tipo se eu escolher a opcao 1 na primeira vez ele roda normalmente, mas se eu escolher denovo a opcao 1 o minijogo não funciona.

e outro erro é que sempre quando eu compilo os numeros aleatorios que a função rand gera sempre são os mesmos. como eu faço para que eles sejam diferentes??

#include <iostream>
#include <stdlib.h>     //para poder usar o rand()
#include <cstdlib>
using namespace std;

int main()
{
    //variaveis
    int op=0;
char opc;
int a,b, res, tentativa;
    while(op!=2)
    {
                //Menu Principal (Saida)
      system("cls");
      cout << "##########################################"<< endl;
      cout << "\n#  ^_^  MINIJOGO DE MULTIPLICAÇÃO  ^_^   #"<< endl;
      cout << "#                                         #"<< endl;
      cout << "# [1] -> Iniciar jogo                     #"<< endl; 
      cout << "# [2] -> Sair do Programa                 #"<< endl; 
      cout << "#                                         #"<< endl;                                     
      cout << "\n###########################################"<< endl;
      cout<<endl;
                
      cout<<"Escolha uma das opcoes acima: "; cin>>op;
      while(op<1 or op>2)
      {
           cout<<"Opcao invalida\n";
           cout<<"Escolha uma das opcoes acima: "; cin>>op;
       }
                
        switch (op) //verificação e uso de programas especificos para opcoes
        {
              case 1 : { //(opcao 1)
                    system("cls");
                    cout<<"*******************************************************"<<endl;
                    cout << "      Bem-Vindo ao jogo Adivinha o Numero." << endl;
                    cout << "                Boa Sorte!!" << endl;
                    cout<<"\n*****************************************************"<<endl;
                    

                  while (opc != 'n')
                  {
                    int a=rand()  % 9;
                    int b=rand()  % 10;
                    res= a * b;
                    
                    
                    cout << "Quanto e: " << a << "* " << b << "=";
                    cin >> tentativa;
                    while (tentativa!=res)
                    {
                           cout << "Tente de novo. Boa Sorte!" << endl;
                           cout << "\nInsira a sua tentativa: ";
                           cin >> tentativa;
                    }
                           if (tentativa =res)
                           {
                           cout << "Parabens voce acertou!! ^_^ " << endl;
                           
                            cout << "Deseja continuar no jogo? " << endl;
                            cin >> opc;
                            }

                 }

                     
                      system("pause");
                      break;
                      }
              case 2 : { //(opcao 2)
                    system("cls");
                    cout<<"*******************************************************"<<endl;
                    cout << "              Obrigada por usar nosso sistema" << endl;
                    cout << "              Programadora:Andressa Carvalho" << endl;
                                    cout<<"\n*****************************************************"<<endl;
                 break;
                 }            
     }  
  }     

                      system("pause");
                      
    return(0);
}

desde já obrigada.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

andressa, seu programa está gerando sempre os mesmos números pois você está utilizando sempre a mesma "semente", agora você me pergunta o que é isso...basicamente a "semente" é o que faz o rand gerar um número, vamus supor que sua semente seja 1, então o rand cria a sequencia 2, 9, 12, 24....se você utilizar novamente a semente 1 o rand vai criar a mesma sequência, 2, 9, 12, 24...para poder definir qual a semente que o seu programa irá gerar utilize a função srand(); uma boa maneira de sepre ter números aleatórios é fazer com que o seu programa pegue como "semente" a hora atual do seu computador, sendo assim a semente é sempre diferente! a sintaxe seria:

srand(time(NULL));

voce tem de colocar a função antes de começar a utilizar o rand, aconselho a colocar depois das declarações das suas variáveis, depois de ser declarada no programa, ela não precisa ser declarada novamente.

espero ter ajudado =)

Link para o comentário
Compartilhar em outros sites

  • 0

oi cauepor obrigada pela dica, me ajudou muito,conseguir ajeitar meu codigo

vlw

pessoal estou com mais uma duvida em um outro codigo, que esta dando erro tambem utilizando essa funçao rand, se alguém puder me ajudar tenho que entregar esse trabalho amanha, é um jogo de advinhação onde o programa gera um numero e a pessoa tenta descobrir o numero, onde ele vai informando se ta perto ou não.

o cod é o seguinte

# include <iostream>
# include <cstdlib>
# include <ctime>   
using namespace std;

int x,a;
char opc;
int main ()
{   
    srand(time(0));
    x = rand() % 1000 + 1;

    cout << "Tenho um numero de 1 a 1000\n " << endl;
    cout << "Você pode adivinhar meu número?\n " << endl;   
   
while ((opc!='n') && (a!=x)){    

    cout << "Por favor, Digite seu palpite" << endl;
    cin >> a;
    
    if (a>x){
       cout << " Muito alto. Tente novamente.\n" << endl;
       }
    if (a<x){
       cout << "Muito baixo. Tente novamente. \n" << endl;
       }
       cout <<"Deseja tentar de novo: ";
       cin >> opc;
}
   if (a=x){
   cout << "Excelente! Você adivinhou o numero!\n" << endl;
   }
   if (opc='n'){
   cout << "O numero escolhido foi: " << x << endl;
   }

 system("pause>0");
    return 0;
}

desde já obrigada

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...