Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[Ayuda] Algoritmo cuadrado Magico
Autor Mensaje
SIL.GCH Sin conexión
Empleado del buffet
Feliz :)
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 8
Agradecimientos dados: 5
Agradecimientos: 17 en 3 posts
Registro en: Oct 2013
Mensaje: #1
[Ayuda] Algoritmo cuadrado Magico Ejercicios Algoritmos y Estructuras de Datos
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;

}
22-06-2014 00:04
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Shizus Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 18
Agradecimientos dados: 4
Agradecimientos: 2 en 1 posts
Registro en: Aug 2008
Mensaje: #2
RE: [Ayuda] Algoritmo cuadrado Magico

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;
}



¡Buenas! Antes que nada atención a la identación y el formato del texto, un código bien identado hace que la gente te quiera más (?).

Si bien no estoy seguro de la lógica, en una vista rápida te puedo decir que:

11: Tenés un 'dim%2=1', supongo que será ==.

En ningún momento les das un valor inicial a i y af entonces te salteas todo el while y te vas directo al for que recorre la matriz para mostrar los valores.

Cualquier cosa, avisá. Supongo que vas a tener que hacer un par de correcciones más.
22-06-2014 01:15
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
don nadie
Invitado
Sin estado :(

 
Mensaje: #3
RE: [Ayuda] Algoritmo cuadrado Magico
Con quien cursas?
22-06-2014 13:52
Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)