22-06-2014, 00:04
Hola! Tengo que hacer un programa en c++ que haga un cuadrado mágico, con n de 3 a 25. No se en que me estoy equivocando en el código, pero me hace cualquier cosa, si alguien me puede ayudar...
Copio el codigo:
int main(int argc, char** argv) {
int dim; // Esta variable almacena la dimensión de la matriz. Puede 3<=dim<=25
int f; // para indicar la fila de la matriz
int c; // para indicar la columna de la matriz.
int i; // va a ser mi contador
cout<<"Ingrese el valor de la matriz: ";
cin>> dim;
cout<< endl;
if (dim <= 25 && dim >=3 && dim%2=1) // Condiciones pedidas por el enunciado: Matriz impar, 3 <= dim <= 25
{
int cuad[dim][dim]; // Creamos una matriz de la dimensión indicada
c= dim/2; // empezamos desde la columna central de la matriz, en la primer fila.
// cuad[c][f]=1;
while ( i<=dim*dim) //Esto determina la cantidad de números que tenemos que colocar, en una matriz de 3x3, seran 9 número, en una de 4x4, seran 16, etc.
{ //El contador i, determinará el valor de cada registro de la matriz.
if (f<0)f=dim-1; // Esto es para que cuando llegamos a la fila superior, empecemos a cargar los datos desde la fila n-1 (ultima fila)
if (c==dim) {c==0;} // Cuando llegamos al extremo derecho, ultima columna, (dado por la dimensión de la matriz) empezaremos a cargar las columnas superiores, desde la fila 0
if (cuad[c][f]>=1 && cuad[c][f]<=dim*dim) // Cuando llegamos a una celda, que tiene un valor, nos posicionamos en la celda debajo a la que cargamos anteriormente.
{
f=f+2;
c=c-1;
if((c>=dim)){c=c-dim;}
if(f<0){f=dim-1;}
cuad[c][f]=i;
}
else { cuad[c][f]=i;}
--c; ++f;
i++;
}
for (int i=0; i<dim; i++)
{
for (int j=0; j<dim; j++)
{
cout<<cuad[i][j]<< " ";
}
cout<<endl;
}
}
return 0;
}
Copio el codigo:
int main(int argc, char** argv) {
int dim; // Esta variable almacena la dimensión de la matriz. Puede 3<=dim<=25
int f; // para indicar la fila de la matriz
int c; // para indicar la columna de la matriz.
int i; // va a ser mi contador
cout<<"Ingrese el valor de la matriz: ";
cin>> dim;
cout<< endl;
if (dim <= 25 && dim >=3 && dim%2=1) // Condiciones pedidas por el enunciado: Matriz impar, 3 <= dim <= 25
{
int cuad[dim][dim]; // Creamos una matriz de la dimensión indicada
c= dim/2; // empezamos desde la columna central de la matriz, en la primer fila.
// cuad[c][f]=1;
while ( i<=dim*dim) //Esto determina la cantidad de números que tenemos que colocar, en una matriz de 3x3, seran 9 número, en una de 4x4, seran 16, etc.
{ //El contador i, determinará el valor de cada registro de la matriz.
if (f<0)f=dim-1; // Esto es para que cuando llegamos a la fila superior, empecemos a cargar los datos desde la fila n-1 (ultima fila)
if (c==dim) {c==0;} // Cuando llegamos al extremo derecho, ultima columna, (dado por la dimensión de la matriz) empezaremos a cargar las columnas superiores, desde la fila 0
if (cuad[c][f]>=1 && cuad[c][f]<=dim*dim) // Cuando llegamos a una celda, que tiene un valor, nos posicionamos en la celda debajo a la que cargamos anteriormente.
{
f=f+2;
c=c-1;
if((c>=dim)){c=c-dim;}
if(f<0){f=dim-1;}
cuad[c][f]=i;
}
else { cuad[c][f]=i;}
--c; ++f;
i++;
}
for (int i=0; i<dim; i++)
{
for (int j=0; j<dim; j++)
{
cout<<cuad[i][j]<< " ";
}
cout<<endl;
}
}
return 0;
}