Problema en C

W

Pues estoy intentando hacer un 3 en raya en C.

Declaro un array int lugar[9];

Luego

for (lugar;i>3;i++)
{
switch(lugar)
{
case 'a':
printf("[ o ] ");
lugar="1";

Me da un error en lo que esta en negrita. Me dice: invalid conversion const char to int. No se porque es ni como arreglarlo.

guner

ponlo con comillas simples: '1'

LOc0

Es SIN COMILLAS (lugar=1)

Si pones lugar='1', lugar tomaría el valor ASCII del carácter '1' que es 49.

Salu2 ;)

PD: El case tb es incorrecto. Un array de int contiene ENTEROS, no caracteres. Tendría que ser case 1, case 2, etc... (sin comillas) Si necesitas que contenga caracteres declara el array como char lugar[9] (Entonces si habría que usar las comillas simples)

guner

crei ke era un char[] :/// por el error

Thanat0s

Ese for va a funcionar?

guner

for (lugar;i>3;i++)



lugar no es una declaración, para el caso es como dejarlo en blanco.

si i es mayor a tres, será un bucle infinito.
si es menor no se ejecutará lo que está dentro del for.

nanoSpawn

no, en ese for, si lugar es mayor que 3, entonces no se ejecutará lo del for. Realmente es un sistema de programación bastante curioso... porque es imposible adivinar para qué podría querer eso.

W

a ver, llevo 2 dias programando, no me sacrifiqueis de esta manera. Yo lo que queria era que recorriese el array y pensaba que el for funcionaria. Queria comprobar el valor de lugar[1], lugar[2], lugar[3]. Pero no se como hacerlo si no es de esa manera.

Ju

Madre, qué codigo más raro, y cuántos errores contiene (que ya muy bien te han comentado, por cierto)

W

Ahhh, creo que ya se como hacerlo, luego os comento como voy tirando xD

LOc0

a ver, llevo 2 dias programando, no me sacrifiqueis de esta manera. Yo lo que queria era que recorriese el array y pensaba que el for funcionaria. Queria comprobar el valor de lugar[1], lugar[2], lugar[3]. Pero no se como hacerlo si no es de esa manera.

Tranquilo, que nadie de los que posteamos aquí nacimos programando ¬¬... Lo que se aprecia a simple vista es que te has puesto a la faena sin haberte preparado mínimamente antes, y por eso cometes ciertos fallos que cuando lleves un tiempo programando serán impensables (por ejemplo lo del for se me pasó completamente).

Si lo que quieres es recorrer el array lugar[] ascendentemente el for sería:

for(i=0; i<3; i++)
{

switch(lugar)
{

case loquesea:

}


}

De todas formas, pásate por aqui y LEE un poco --> http://c.conclase.net/curso/index.php (Es un curso de C++, pero la primera parte es común a C y a C++).

Después de LEER, si tienes dudas, pregunta.


Salu2 ;)

W

si si, eso me di cuenta al momento de leer los post, ya lo habia solucionado, de todas formas muchas gracias a todos, ya os ire informando de como me va.

Por cierto ya estoy leyendo el manual de C de Gorka Urrutia, pero al principio hay cosas que leo y compruebo y pienso que estan bien y por mi inexperiencia cometo un error, y por eso pregunto, porque no soy capaz de solucionarlo, que parece que pregunto por gusto.

nanoSpawn

wirYo: deberías ser más capaz de resolver algunos problemas por tí mismo, a veces. La parte más interesante de programar es saber resolver problemas, seguido de saber buscar recursos para resolver dichos problemas.

Puedo entender que ahora te falte una importante base teórica, pero buscando por tí mismo avanzarás más que esperando a que te resuelvan las dudas (que según cuantas sean, acabarán exasperando al personal).

PeLoTaSo

¿Soy el único que piensa que para hacer un 3 en raya hace falta una matriz, no un array unidimensional?. Es que estoy viendo que declara lugar[9], y supongo que se referirá a los registros de una matriz 3x3, para eso es más fácil hacer lugar[3][3], vamos digo yo.

aLeX

Yo lo veo más facil con un array de una sola dimension. Visto así es fácil encontrar tres X seguidas sin volverte loco con las coordenadas.

xxx------ tres en una fila, todas seguidas
x--x--x-- tres en una columna, separadas por 2 blancos
x---x---x diagonal a drch, separadas por 3 blancos
--x-x-x-- diagonal a izd, separadas por 1 blanco

Te recorres el arry buscando esas posibilidades y sabes cuando el jugador tiene 3 en raya. Creo que solo hay 8 combinaciones posibles.

RoDRa

las posibilidades son 8 y si que seria mas facil hacerlo como tu dices. Lo que pasa es q a "su manera" se puede hacer un programa como el conecta 4, o cosas mas grandes usando la misma base y solo cambiando valores (si lo hace bien)

Usuarios habituales

  • aLeX
  • PeLoTaSo
  • nanoSpawn
  • LOc0
  • Ju
  • guner
  • Thanat0s