Hola a todos! Hace rato que no visitaba el foro pero volví a retomar el lenguaje C y ahora estoy teniendo un inconveniente con una función que debo desarrollar.
El tema es el siguiente. En mi programa tengo un vector Cartas de 10 posiciones. Lo inicializo del 0 al 9. Es decir... Cartas[1] es igual a 1, Cartas[2] es igual a 2, y así... El cero no interesa en este caso porque solo se utilizan las cartas del 1 al 9.
A medida que el juego avanza, algunas cartas del vector se cambian por el valor 0 (quedando estas "tapadas") y necesito validar si dentro del vector existe una carta que equivalga a una tirada de Dados realizada por el jugador, o si al menos, existe la posibilidad de sumar 2 cartas del Vector para obtener el resultado de la tirada de Dados.
La tirada de Dados consta de 2 dados de 6 caras c/u. Siendo la tirada mas baja posible 2, y la mas alta 12.
int validaJugada ()
{
int i, j, p, suma;
for (i=1; i<10; i++)
{
for (j=1; j<10; j++)
{
suma = Cartas[i] + Cartas[j];
if (suma == Dados)
{
p = 1;
break;
}
else
{
p = 0;
}
}
}
return p;
}
En este código solo comparo las sumas de Cartas[1] con Cartas[1], Cartas[1] con Cartas[2], Cartas[1] con Cartas[3]... Así hasta Cartas[9].
Luego comparo las sumas de Cartas[2] con Cartas[1], Cartas[2] con Cartas[2], Cartas[2] con Cartas[3]... Así hasta Cartas[9].
y sucesivamente... hasta que termine el ciclo..
Ahora... el problema está en que no debería sumar cartas de la misma posición... es decir Cartas[1] con Cartas[1], o Cartas[2] con Cartas[2]... y no sé como obviar o exceptuar esto..
Tendría que dejar una posicion del vector fija como pivot y sumarla con todas las otras una por una hasta la ultima posicion, y luego comenzar a hacer lo mismo pero desde la segunda posición, pero realmente se me complica...
Desde ya muchas gracias por su ayuda..