Dev - C++ - Comparar tres variables

 
Vista:

Comparar tres variables

Publicado por Ricardo (3 intervenciones) el 06/06/2017 08:36:21
Hola a todos.
Tengo un ejercicio de la escuela que no he podido resolver satisfactoriamente.
Es un juego donde lanzas 3 dados (lo hago con srand) y dependiendo del resultante, hay varias acciones.
Si los 3 son igual a 6, ganas triple; si los 3 son iguales, ganas doble; si uno de los 3 es diferente, pierdes; y si no obtienes ninguno de lo anterior, se declara empate y vuelve a lanzar los dados.
Lo intente con If´s pero el profesor me dijo que es mucho y no funciona perfectamente.
¿Alguna solucion, compañeros?.
Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Comparar tres variables

Publicado por agustin (522 intervenciones) el 06/06/2017 11:56:24
modo 1:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <ctime>
 
using namespace std;
 
int main()
{
    //Usa nombres descriptivos para no volverte loco con los nombres de las variables
	int dado1,dado2,dado3;
 
    //La semilla solo hay que inicializarla una sola vez
    srand(time(NULL));
 
    dado1=rand()%6+1;
    dado2=rand()%6+1;
    dado3=rand()%6+1;
 
    cout << dado1 << ", " << dado2 << ", " << dado3 << endl;
    if(dado1==6 && dado2==dado1 && dado3==dado1)
        cout << "Has ganado triple" << endl;
    else if(dado1==dado2 && dado2==dado3)
        cout << "Has ganado doble" << endl;
    else if(dado1==dado2 || dado1==dado3 || dado2==dado3)
        cout << "Has perdido" << endl;
    else
        cout << "Tablas" << endl;
 
    cin.get();
    return 0;
}

modo 2:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <iostream>
#include <ctime>
 
#define N_DADOS 3
 
using namespace std;
 
int coincidencias(int dados[N_DADOS])
{
    int max_coincidencias=1,aux;
 
    for(int i=0;i<N_DADOS-1;i++){
        aux=1;
        for(int j=i+1;j<N_DADOS;j++){
            if(dados[i]==dados[j])
                aux++;
        }
        if(aux > max_coincidencias)
            max_coincidencias=aux;
    }
    return max_coincidencias;
}
 
int main()
{
    int dados[N_DADOS];
 
    srand(time(NULL));
 
    //Tiro los dados
    for(int i=0;i<N_DADOS;i++){
        dados[i]=rand()%6+1;
    }
 
    //Muestro los dados
    for(int i=0;i<N_DADOS;i++){
        cout << dados[i];
        if(i<N_DADOS-1)
            cout << ", ";
    }
    cout << endl;
 
    //Zona donde se establecen las reglas del juego
    switch(coincidencias(dados)){
        case 3:
            if(dados[0]==6)
                cout << "Has ganado triple" << endl;
            else
                cout << "Has ganado doble" << endl;
            break;
        case 2:
            cout << "Has perdido" << endl;
            break;
        case 1:
            cout << "Tablas" << endl;
            break;
    }
    //Pauso el programa
    cin.get();
 
    return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de gregory
Val: 82
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Comparar tres variables

Publicado por gregory (34 intervenciones) el 12/06/2017 08:45:53
es muy mal optimizado doble bucle. representa una complejida de O (n 2al cuadrado) es muy lento ese programa

este que hice tiene una complejidad Constante super mas rapido que el tuyo agustin lo siento algun dia.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int juego_dado();
int main()
{
  juego_dado();
    getch();
}
 
 
 
int juego_dado()
{srand(time(0));
 
  int dado[3]={0};//dado
  //se supone que tu ya sabe como llenarlo sino es lo mismo
  //un ejemplo a[0]=rand()%6+1;
  int flujo_juego[3]={0};//decide que pasa en el juego
  int cont[2]={0};   //dice lo que paso en el juego
   int i;
 for( i=0;dado[i]<3;i++)
  {
     dado[i]=1;//rand()%3+1;
    if(i>0)
    {
      if(dado[i-1]==dado[i])
       {
        cont[1]++;
       }
 
    }
   if(dado[0]==1&&i>0)
    {
      if(dado[i]==dado[i-1])
       {
        cont[0]++;
       }
    }
  }
  printf("dado #1:%daddo #2:%d dado #3:%d",dado[0],dado[1],dado[2]);
   if((cont[0]+cont[1])==0)
  {
   //perdio 
   printf("perdio");
   return 3;
  }
  if(cont[0]==2)
  {
   //hay triple porque los 3 son iguales
   printf("\ngane triple");
   return 5;
  }
  if(cont[1]==2)
  { //son todos iguales
     printf("gane");
 
     return    1;
  }
  if(cont[1]==1)
  {//2son iguales
    printf("empate");
    return 2;
  }
 
 
  getch();
}
esta en c ricardo pasarlo a c++ no tiene gracia y mas cuando ya el trabajo dificil esta hecho
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Comparar tres variables

Publicado por Ricardo (3 intervenciones) el 14/06/2017 05:46:12
Hole Gregory. Vectores apenas los estoy viendo, analizare. Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Comparar tres variables

Publicado por Ricardo (3 intervenciones) el 14/06/2017 05:45:10
Muchas gracias Agustin, analizaré este programa. perdon por contestar hasta ahora pero hasta ahora llego a mi correo la respuesta. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar