Hola que tal , pues mi duda es esa tengo que hacer un "puzzle" de numeros para que el usuario los ordene en forma creciente y el espacio en blanco quede en la esquina inferior derecha ...
Esto es lo que llevo hasta ahora .
Esta hecho en Dev c++ , pero es C .
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define TAM 12
void ordenado (int,int,int M[TAM][TAM]);
void desordenar (int,int,int M[TAM][TAM]);
void jugar (int,int,int M[TAM][TAM]);
main ()
{
int u=0;
int i,x,a=1,menu;
int M[TAM][TAM];
int columnas,filas;
do
{
printf ("Introduzca las filas de la matriz: "); if(filas<3 || filas>12)
{
printf("\nError. El orden debe estar entre 3 y 12"); }
}
while (filas<3 || filas>12);
do
{
printf ("\nIntroduzca las columnas de la matriz: "); if(columnas<3 || columnas>12)
{
printf("\nError. El orden debe estar entre 3 y 12"); }
}
while (columnas<3 || columnas >12);
ordenado (filas,columnas,M);
desordenar (filas,columnas,M);
jugar (filas,columnas,M);
}
//-------------------------------------------------------------------------------
void ordenado (int filas,int columnas, int M[TAM][TAM])
{
int i,x,a=1;;
for (i=0;i<filas;i++)
{
for (x=0;x<columnas;x++)
{
if ((i==filas-1) && (x==columnas-1))
{
M[i][x]=0;
}
else
{
M[i][x]=a;
a++;
}
}
}
for (i=0;i<filas;i++)
{
for (x=0;x<columnas;x++)
{ if ((i==filas-1) && (x==columnas-1))
{
}
else
}
}
}
//--------------------------------------------------------------------------------
void desordenar (int filas,int columnas,int M[TAM][TAM])
{
int i,x,g,temp,y;
temp = (filas*columnas)-1;
for(i=0; i<filas; i++)
{
for(g=0; g<columnas; g++)
{
M[i][g] = 0;
}
}
for(i=1; i<=temp; i++)
{
do
{
}
while(M[y][x]);
M[y][x]=i;
}
for(i=0; i<filas; i++)
{
for(g=0; g<columnas; g++)
{
if (M[i][g]==0)
{
}
else
{
}
}
}
}
//-----------------------------------------------------------------------
void jugar(int filas, int columnas, int M[TAM][TAM])
{
int movimiento=0;
int auxFila=0;
int auxColumna=0;
int aux=0;
int aux2=0;
double tiempoTotal=0;
do
{
for(int x=0; x<filas; x++)
{
for(int y=0; y<columnas; y++)
{
if(M[x][y]==0)
{
auxFila=x;
auxColumna=y;
}
else
{
}
}
}
do
{
}while((movimiento!=72)&&(movimiento!=75)&&(movimiento!=77)&&(movimiento!=80));
switch(movimiento)
{
case 72:
{
if(auxFila+1==filas)
{
printf("Movimiento Invalido"); }
else
{
aux2=auxFila+1;
aux=M[auxFila][auxColumna];
M[auxFila][auxColumna]=M[aux2][auxColumna];
M[aux2][auxColumna]=aux;
}
break;
}
case 77:
{
if(auxColumna-1==-1)
{
printf("Movimiento Invalido"); }
else
{
aux2=auxColumna-1;
aux=M[auxFila][auxColumna];
M[auxFila][auxColumna]=M[auxFila][aux2];
M[auxFila][aux2]=aux;
}
break;
}
case 75:
{
if(auxColumna+1==columnas)
{
printf("Movimiento Invalido"); }
else
{
aux2=auxColumna+1;
aux=M[auxFila][auxColumna];
M[auxFila][auxColumna]=M[auxFila][aux2];
M[auxFila][aux2]=aux;
}
break;
}
case 80:
{
if(auxFila-1==-1)
{
printf("Movimiento Invalido"); }
else
{
aux2=auxFila-1;
aux=M[auxFila][auxColumna];
M[auxFila][auxColumna]=M[aux2][auxColumna];
M[aux2][auxColumna]=aux;
}
break;
}
}
} while(!ordenado(filas,columnas,M));
printf("\nFelicidades has ganado!!!!"); }
Cuando trato de compilar me da este error
in function void jugar (int,int,int(*)[12])
could no convert ordenado (filas,columnas,M) to bool
in argument to unary !
Por favor hay alguien que me pueda ayudar ?