Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Pessoa_737

C++ Informar qual número é maior e quais dados tem o mesmo número

Recommended Posts

Olá olá, preciso fazer um programa que informe qual dado tem o maior número e se algum dado tirou o mesmo número que outro (essa parte do empate eu ainda não fiz porque a primeira básica tá dando problema, mas se alguém quiser me dar uma luz de como posso fazer isso agradeço).

Então, primeiro problema: Ele consegue ver qual é o maior número, mas nem sempre, as vezes algum dado não tira o maior número e ganha ponto mesmo assim;

segundo problema: é para o jogo se encerrar quando alguém faz 10 pontos, MAS ele continua rodando depois de alguém alcançar 10 pontos :|

#include <iostream>
#include <time.h> //srand time null
#include <stdlib.h> //rand
#include <windows.h> //sleep

using namespace std;

    int ponto_j1 = 0; ///pontuação dos jogadores
    int ponto_j2 = 0;
    int ponto_j3 = 0;
    int ponto_j4 = 0;

class Dado{
public:
    int dado;
    void numrand();
};

void Dado::numrand(){
    this->dado=rand()%6+1; ///função para dar um numero aleatorio de 1 até 6
}

void Pontuacao(){
    cout<<"   JOGADOR 1: "<<ponto_j1<<"   JOGADOR 2: "<<ponto_j2<<"   JOGADOR 3: "<<ponto_j3<<"   JOGADOR 4: "<<ponto_j4<<endl;
}

int main (){
    char resp;
    do{
    cout<<">Aperte R para rolar os dados!"<<endl;
    cin>>resp;
    if (resp=='r'||resp=='R'){
            system("cls");
            Pontuacao();
    srand(time(NULL));
    Dado *dado1=new Dado(); ///cria um dado para cada jogador
    Dado *dado2=new Dado();
    Dado *dado3=new Dado();
    Dado *dado4=new Dado();
    dado1->numrand();
    dado2->numrand(); ///dá um número aleatório para cada dado
    dado3->numrand();
    dado4->numrand();
            for (int i=0; i<3; i++){
                cout<<"rolando.";
                Sleep(200);
                cout<<".";
                Sleep(200);
                cout<<".";
                Sleep(200);
                }
                    cout<<endl<<"JOGADOR 1 >> "<<dado1->dado<<" <<"<<endl;
                    cout<<endl<<"JOGADOR 2 >> "<<dado2->dado<<" <<"<<endl;
                    cout<<endl<<"JOGADOR 3 >> "<<dado3->dado<<" <<"<<endl;
                    cout<<endl<<"JOGADOR 4 >> "<<dado4->dado<<" <<"<<endl<<endl;
                        if (dado1>dado2 && dado1>dado3 && dado1>dado4){ ///se o dado 1 for maior
                            cout<<"O >JOGADOR 1< ganhou 1 ponto!!"<<endl;
                            ponto_j1++;
                        }
                        if (dado2>dado1 && dado2>dado3 && dado2>dado4){ ///se o dado 2 for maior
                            cout<<"O >JOGADOR 2< ganhou 1 ponto!!"<<endl;
                            ponto_j2++;
                        }
                        if (dado3>dado2 && dado3>dado1 && dado3>dado4){ ///se o dado 3 for maior
                            cout<<"O >JOGADOR 3< ganhou 1 ponto!!"<<endl;
                            ponto_j3++;
                        }
                        if (dado4>dado2 && dado4>dado3 && dado4>dado1){ ///se o dado 4 for maior
                            cout<<"O >JOGADOR 4< ganhou 1 ponto!!"<<endl;
                            ponto_j4++;
                        }
            }
    }while(ponto_j1<10 || ponto_j2<10 || ponto_j3<10 || ponto_j4<10);
return 0;
}

 

Editado por Pessoa_737

Compartilhar este post


Link para o post
Compartilhar em outros sites
56 minutos atrás, Pessoa_737 disse:

if (dado2>dado1 && dado2>dado3 && dado2>dado4){ ///se o dado 2 for maior

Esse seu if está comparando um objeto com outro, o que ele deve comparar é o atributo do objeto assim:

if (dado1->dado > dado2->dado && dado1->dado > dado3->dado && dado1->dado > dado4->dado )


 

 

58 minutos atrás, Pessoa_737 disse:

if (dado1>dado2 && dado1>dado3 && dado1>dado4){ ///se o dado 1 for maior cout<<"O >JOGADOR 1< ganhou 1 ponto!!"<<endl; ponto_j1++; } if (dado2>dado1 && dado2>dado3 && dado2>dado4){ ///se o dado 2 for maior cout<<"O >JOGADOR 2< ganhou 1 ponto!!"<<endl; ponto_j2++; } if (dado3>dado2 && dado3>dado1 && dado3>dado4){ ///se o dado 3 for maior cout<<"O >JOGADOR 3< ganhou 1 ponto!!"<<endl; ponto_j3++; } if (dado4>dado2 && dado4>dado3 && dado4>dado1){ ///se o dado 4 for maior cout<<"O >JOGADOR 4< ganhou 1 ponto!!"<<endl; ponto_j4++; }

Sua estrutura de seleção tem que que parar caso um if seja verdadeiro, você necessita utilizar IF com ELSE IF:

  if
  .
  .
  else if
  .
  .
  else if
  .
  .
  else if

 

1 hora atrás, Pessoa_737 disse:

while(ponto_j1<10 || ponto_j2<10 || ponto_j3<10 || ponto_j4<10);

Seu while está continuando caso até que todos os jogadores tenham mais que 10 pontos, troque o || por &&

while(ponto_j1<10 && ponto_j2<10 && ponto_j3<10 && ponto_j4<10);

 

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • 5 horas atrás, CiroboyBR disse:

    Esse seu if está comparando um objeto com outro, o que ele deve comparar é o atributo do objeto assim:

    
    if (dado1->dado > dado2->dado && dado1->dado > dado3->dado && dado1->dado > dado4->dado )


     

     

    Sua estrutura de seleção tem que que parar caso um if seja verdadeiro, você necessita utilizar IF com ELSE IF:

    
      if
      .
      .
      else if
      .
      .
      else if
      .
      .
      else if

     

    Seu while está continuando caso até que todos os jogadores tenham mais que 10 pontos, troque o || por &&

    
    while(ponto_j1<10 && ponto_j2<10 && ponto_j3<10 && ponto_j4<10);

     

    Veluuu cara!!! Tá rodando certinho agora :)

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×