elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Cuadrado Mágico
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Cuadrado Mágico  (Leído 4,909 veces)
Black Lotus

Desconectado Desconectado

Mensajes: 26


Ver Perfil
Cuadrado Mágico
« en: 14 Marzo 2013, 22:42 pm »

Debo hacer un programa que resuelva un cuadrado mágico con las reglas noreste... y que  el programa debe mostrar como resuelve el método, para ello debe de utilizar un retardo de medio segundo por cada número a mostrar
El problema es el siguiente: yo entiendo que hay que poner cada número en el orden que se va solucionando... es decir primero el 1 en su lugar respectivo... el 2 en su lugar respectivo... el 3 en su lugar respectivo.. el 4 en su lugar respectivo... etc.. si es asi como se hace que yo lo unico que puedo hacer es que me muestre pero de linea en linea no de uno en uno... el codigo es el siguiente..

Código
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <windows.h>
  4. #include <conio.h>
  5. #define r( a, N ) ( (a)<0 ? N+(a)%N : ( (a)>=N ? (a)%N : (a) ) )
  6. int main()
  7. {
  8. {
  9. int cuadrado[17][17],a,b,n,N;
  10. do{
  11. cout<<"Ingrese el orden ( impar entre 3 y 17 ): " ;
  12. cin>>N;
  13. }while( !(N%2));
  14. cout<<"Cuadrado Mágico de orden :"<<N;
  15. for(a=0;a<N;a++){
  16. for(b=0;b<N;b++){
  17. cuadrado[a][b]=0;}
  18. }
  19. for( a=N/2,b=0,n=1; n<=N*N; )
  20. if(!cuadrado[a][b] )
  21. cuadrado[a][b] = n++,
  22. a=r(a+1,N),
  23. b=r(b-1,N);
  24. else a=r(a-1,N),
  25. b=r(b+2,N);
  26. for(b=0;b<N;b++)
  27. {
  28. cout << endl;
  29. for(a=0;a<N;a++)
  30. cout <<" | "<< cuadrado[a][b] << " | "; Sleep(500);
  31. }
  32. }
  33. getch ();
  34. }

GRACIAS...


En línea

Almapa

Desconectado Desconectado

Mensajes: 111


Ver Perfil
Re: Cuadrado Mágico
« Respuesta #1 en: 15 Marzo 2013, 00:16 am »

El problema tiene fácil solución, si te fijas en la línea 30, debería haber una "," entre el "cout" y el "sleep" para que lo tenga en cuenta dentro del segundo bucle "for". Por lo tanto cambiando dicha línea ya saca número a número.
Aquí está dicha línea corregida.

cout <<" | "<< cuadrado[a] << " | ", Sleep(500);


Un saludo


En línea

Black Lotus

Desconectado Desconectado

Mensajes: 26


Ver Perfil
Re: Cuadrado Mágico
« Respuesta #2 en: 15 Marzo 2013, 00:27 am »

disculpa... gracias muchisimas gracias por eso...

pero ahora disculpa la pregunta.. lo que me dijiste vos era la solución? o es asi como yo comprendi el problema lo digo en la descripción de mi ejercicio antes del codigo...
En línea

Almapa

Desconectado Desconectado

Mensajes: 111


Ver Perfil
Re: Cuadrado Mágico
« Respuesta #3 en: 15 Marzo 2013, 01:00 am »

Mmm mi respuesta es para mostrar la solución final elemento a elemento, pero no por orden de resolución. No había entendido bien tu pregunta, le echaré un vistazo.
En línea

Almapa

Desconectado Desconectado

Mensajes: 111


Ver Perfil
Re: Cuadrado Mágico
« Respuesta #4 en: 15 Marzo 2013, 01:29 am »

Mira a ver que te parece esta solución. Aunque no es muy agradable ver "0" durante la resolución puede hacer que te saque "*" o "-" en lugar de los 0.


Código:
#include <iostream>
#include <stdio.h>
#include <windows.h>
#include <conio.h>
using namespace std;
#define r( a, N ) ( (a)<0 ? N+(a)%N : ( (a)>=N ? (a)%N : (a) ) )
int main()
{
 {
  int cuadrado[17][17],a,b,n,N,i,j;
  do{
     cout<<"Ingrese el orden ( impar entre 3 y 17 ): " ;
     cin>>N;
  }while( !(N%2));

  cout<<"Cuadrado Mágico de orden :"<<N;

  for(a=0;a<N;a++){
    for(b=0;b<N;b++){
    cuadrado[a][b]=0;}
  }

for( a=N/2,b=0,n=1; n<=N*N; )
{
 if(!cuadrado[a][b] )cuadrado[a][b] = n++,a=r(a+1,N),b=r(b-1,N);else a=r(a-1,N),b=r(b+2,N);
 system("cls");
 cout<<"Cuadrado Mágico de orden :"<<N;
 for(i=0;i<N;i++)
 {
  cout << endl;
  for(j=0;j<N;j++)cout <<" | "<< cuadrado[j][i] << " | ";
  }
 Sleep(500);
}
}
getch ();
}

« Última modificación: 15 Marzo 2013, 01:35 am por Almapa » En línea

Black Lotus

Desconectado Desconectado

Mensajes: 26


Ver Perfil
Re: Cuadrado Mágico
« Respuesta #5 en: 15 Marzo 2013, 20:58 pm »

muchisisisimas gracias asi esta perfecto  ;D ;D ;D ;D ;D ;D ;D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con cuadrado mágico [RESUELTO]
Programación C/C++
bigfu 7 12,850 Último mensaje 14 Enero 2016, 02:11 am
por Dayciber
Programa en C sharp que genera un cuadrado magico , suma sus filas y columnas
.NET (C#, VB.NET, ASP)
david_quiroz19 0 9,429 Último mensaje 13 Noviembre 2011, 00:15 am
por david_quiroz19
Aporte: Cuadrado Mágico de orden impar
Programación C/C++
dato000 2 12,392 Último mensaje 22 Agosto 2019, 08:01 am
por TheSj
ayuda con area cuadrado
PHP
General Dmitry Vergadoski 2 4,518 Último mensaje 2 Mayo 2013, 00:28 am
por #!drvy
Cuadrado Mágico
Programación C/C++
anaaaaaaa 3 7,208 Último mensaje 7 Diciembre 2015, 16:37 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines