elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  PROGRAMA DADOS LOCOS
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: PROGRAMA DADOS LOCOS  (Leído 481 veces)
Pentix05

Desconectado Desconectado

Mensajes: 2


Ver Perfil
PROGRAMA DADOS LOCOS
« en: 11 Noviembre 2021, 12:59 pm »

QUE ALGUIEN ME AYUDE!!!!! Tengo que hacer un programa para clase y es de dados locos. el titulo es este: El  juego  de  los  dados  locos  funciona  así:  se  lanzan  dos  dados  y  se  suman  sus  puntuaciones;  cuando  el 
resultado es 8 o 9 se gana y cuando es 2, 7 o 12 se pierde. En los demás casos se repite el lanzamiento de la
pareja de dados, hasta que sale un 8 o 9 (con la que se pierde) o de nuevo obtenemos la suma inicial (con la
que se gana).  Escribe un programa que simule tantas partidas como el usuario desee al final del programa  y calcule la probabilidad de ganar
(es decir, la frecuencia relativa que se obtiene al dividir el número de partidas ganadas entre el total de las partidas
jugadas).
HASTA AHÍ BIEN, HE HECHO TODO EL PROGRAMA Y ESTA BIEN PERO CUANDO LLEVO MAS DE DOS PARTIDAS Y LA SUMA TOCA UN 5 O 6 O 4 SE PARA Y NO ME CUENTA COMO PARTIDA GANADA O PERDIDA YA QUE SOLO PUEDE HABER DOS OPCIONES.
ALGUN ALMA CARITATIVA QUE PUEDA AYUDARME PORFAVOR.


#include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;
int main()
{
   srand(time(NULL));
   int numDado1, numDado2,numSumaI=0,numSuma=0,partidas,iteracion=0;
   double probP=0,probG=0,ganar=0, perder=0;
   char res;
   do
   {
      numDado1=1+rand()%(6-1+1);
      numDado2=1+rand()%(6-1+1);
      cout<<"Numero 1: "<<numDado1<<endl;
      cout<<"Numero 2: "<<numDado2<<endl;
      numSumaI=numDado1+numDado2;
      cout<<"La Suma: "<<numSumaI<<endl;
      if(numSumaI==8||numSumaI==9)
      {
         cout<<"Enorabuena, has ganado"<<endl;
         ganar++;
      }
      else
      {
         if(numSumaI==2||numSumaI==7||numSumaI==12)
         {
            cout<<"Pringao, has perdido"<<endl;
            perder++;
         }
         else
         {
            if(numSumaI==3||numSumaI==4||numSumaI==5||numSumaI==6||numSumaI==10||numSumaI==11)
            {
               while(iteracion==0)
               {
                  cout<<"Tiro otra vez los dados"<<endl;
                  numDado1=1+rand()%(6-1+1);
                  numDado2=1+rand()%(6-1+1);
                  cout<<"Numero 1: "<<numDado1<<endl;
                  cout<<"Numero 2: "<<numDado2<<endl;
                  numSuma=numDado1+numDado2;
                  cout<<"La Suma: "<<numSuma<<endl;
                  if(numSuma==8||numSuma==9)
                  {
                     cout<<"Pringao, has perdido"<<endl;
                     perder++;
                     iteracion++;
                  }
                  if(numSuma==numSumaI)
                  {
                     cout<<"Enorabuena, has ganado"<<endl;
                     ganar++;
                     iteracion++;
                  }
               }
            }
         }   
      }
      cout<<"Quieres volver a jugar. Pulsa s para continuar ";
      cin>>res;
      partidas++;
   }while(res=='s');
   probG=ganar/partidas*100;
   probP=perder/partidas*100;
   cout<<"Partidas ganadas = "<<ganar<<endl;
   cout<<"Partidas perdidas = "<<perder<<endl;
   cout<<"Partidas totales = "<<partidas<<endl;
   cout<<"Tu probabilidad de ganar es: "<<probG<<"%"<<endl;
   cout<<"Tu probabilidad de perder es: "<<probP<<"%";
   return 0;
}


En línea

fzp

Desconectado Desconectado

Mensajes: 101


Ver Perfil
Re: PROGRAMA DADOS LOCOS
« Respuesta #1 en: 12 Noviembre 2021, 12:19 pm »

Probablemente el problema esté relacionado con el búffer del teclado y el carácter "\n". Creo que una forma de solucionarlo (aunque sea un apaño un poco pastelero) es declarar res como un arreglo y después quedarte con el 1º de los caracteres para comparar:
Código
  1. char res[2];
  2. .
  3. .
  4. .
  5. }while ( res [0] == 's')

Aparte de éso me parece que no funciona bien. Creo que hay un fallo cuando comparas numSuma con numSumaI y lo das como combinación ganadora:

Código
  1. if(numSuma==numSumaI)
  2.                  {
  3.                     cout<<"Enorabuena, has ganado"<<endl;
  4.                     ganar++;
  5.                     iteracion++;

Ya que, las sumas ganadoras son 8 y 9, y en cambio, en esa zona del programa:
numSumaI = 3 / 4 / 5 / 6 / 10 / 11; combinación que ni gana ni pierde.

También creo que el if:
Código
  1. if(numSumaI==3||numSumaI==4||numSumaI==5||numSumaI==6||numSumaI==10||numSumaI==11)
es supérfluo, ya que al llegar a esa zona, puesto que los if...else anteriores han descartado los 8 / 9 / 2 / 7 / 12 por ganadores/perdedores,  numSumaI sólo puede tener los valores que van dentro del if y sería redundante.

Sobre la forma de colocar el código, las reglas del foro indican que hay que hacerlo entre etiquetas GeSHi.


« Última modificación: 12 Noviembre 2021, 21:30 pm por fzp » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
La madre que parió a los locos de OCZ!
Hardware
Artikbot 6 1,958 Último mensaje 28 Octubre 2010, 14:16 pm
por Artikbot
T'amos locos o que!?
Foro Libre
Kami 5 1,389 Último mensaje 21 Febrero 2014, 10:20 am
por Kami
AYUDA URGENTE CON MI PC, ES DE LOCOS
Hardware
MDREKS 1 940 Último mensaje 24 Enero 2016, 13:28 pm
por Orubatosu
Los 'gadgets' del CES sin los que no podrás vivir (y los inventos locos que ...
Noticias
wolfbcn 0 771 Último mensaje 6 Enero 2017, 01:55 am
por wolfbcn
Mi programa no compila. me da un error de, undefined reference to dados, AYUDAAA
Programación C/C++
Paola1509 7 1,951 Último mensaje 4 Noviembre 2017, 23:21 pm
por WHK
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines