Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #5  
Antiguo 15-12-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Y bueno, tengo algo de tiempo libre, a ver si jala esto:

Código Delphi [-]
type
  TMatriz = array of array of Integer;

function CuadradoMagico(N: Integer): TMatriz;
var
  D, I, J: Integer;

begin
  // Nos aseguramos que N sea impar
  if not Odd(N)then
    raise Exception.CreateFmt('%d no es un número impar', [N]);

  // Fijamos la dimensión de la matriz
  SetLength(Result, N, N);

  // Limpiamos la matriz
  for I := 0 to N - 1 do
    for J := 0 to N - 1 do
      Result[I, J] := 0;

  // Posición inicial
  I := 0; J := (N - 1) div 2;

  for D := 1 to N*N do
  begin
    Result[I, J] := D;

    // Si la casilla de arriba a la derecha ya está ocupada, bajamos de fila
    if Result[(((I - 1) mod N) + N) mod N, (J + 1) mod N] <> 0 then
      Inc(I)
    else
    // Vamos a la casilla de arriba a la derecha. Si nos salimos del cuadrado
    // entonces nos colocamos en el extremo opuesto
    begin
      I := (((I - 1) mod N) + N) mod N;
      J := (J + 1) mod N;
    end;
  end;
end;

Ejemplo de uso, usando un StringGrid para mostrar los resultados:

Código Delphi [-]
var
  N, I, J: Integer;
  M: TMatriz;

begin
  N := StrToIntDef(Edit1.Text, 3);
  M := CuadradoMagico(N);

  StringGrid1.RowCount := N;
  StringGrid1.ColCount := N;

  for I := 0 to N - 1 do
    for J := 0 to N - 1 do
      StringGrid1.Cells[J, I] := IntToStr(M[I, J]);
end;

// Saludos

Última edición por roman fecha: 15-12-2011 a las 23:03:56.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿Conocimientos deseables: Pruebas de caja negra o caja blanca ? JXJ Varios 4 19-02-2011 23:45:01
Cubo de decisiones IVAND Varios 1 16-11-2010 23:17:41
Geotool, ¿el pluggin magico de Firefox? felipe88 La Taberna 6 09-08-2008 01:40:29
Cascada Magica de Jeep vtdeleon La Taberna 2 23-01-2007 18:44:00
(24 milimetros) al cubo = reproductor Mp3 Lepe Noticias 2 11-08-2005 22:38:15


La franja horaria es GMT +2. Ahora son las 04:00:42.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi