Ir ao conteúdo
  • Cadastre-se

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


Pessoa_737

Posts recomendados

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;
}

 

Link para o comentário
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
Link para o comentário
Compartilhar em outros sites

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 :)

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!