Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-12-2011
Andres202010 Andres202010 is offline
Registrado
NULL
 
Registrado: jun 2011
Posts: 3
Poder: 0
Andres202010 Va por buen camino
cubo magico o caja magica

hola a todos, soy nuevo en esto de la programacion, estudio informatica, y estaba buscando la solucion a este ejercicio q me dieron de tarea, la verdad q no tngo ni idea de como hacerlo, es en matrices y delphi...
Ejemplo. Se tiene que llenar una matriz nxn, siempre y cuando sea impar, con numeros del 1 a n, dependiendo del tamaño de la matriz, un nro en cada espacio, donde no tiene q repetirse ningun numero, y donde la suma de los elementos de cualquier fila sea el mismo resultado que la suma de los elementos de cualquier columna, incluso los elementos de la diagonal principal y secundaria obtienen el mismo resultado.
Si alguien me puede ayudar estare muy agradecido...
Si falta algun dato mas solo pregunten,
muchas gracias.
Responder Con Cita
  #2  
Antiguo 15-12-2011
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Coje una hoja de papel y haz el ejercicio a mano. Cuando lo hayas terminado, intenta analizar el proceso que has seguido, buscando pasos concretos, repeticiones, etc. Ahora reproduce ese análisis en un diagrama de flujo y ya sólo te falta escribir el programa.

Lo sé, suena a perogrullada, pero es que es así como se hace.

[edito] Acabo de caer en que estamos en el foro OOP, y eso cambia un poco las cosas.

Lo de hacerlo a mano y sacar el proceso, sigue siendo igual. Lo que cambia es que, tras eso, antes del diagrama de flujo, deberás identificar los objetos implicados (supongo que a parte de la matriz poco más necesitarás), con sus métodos y propiedades, y ya después sí, el diagrama de flujo, etc...
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #3  
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
Cita:
Empezado por Andres202010 Ver Mensaje
hola a todos, soy nuevo en esto de la programacion, estudio informatica, y estaba buscando la solucion a este ejercicio q me dieron de tarea, la verdad q no tngo ni idea de como hacerlo, es en matrices y delphi...
Ejemplo. Se tiene que llenar una matriz nxn, siempre y cuando sea impar, con numeros del 1 a n, dependiendo del tamaño de la matriz, un nro en cada espacio, donde no tiene q repetirse ningun numero, y donde la suma de los elementos de cualquier fila sea el mismo resultado que la suma de los elementos de cualquier columna, incluso los elementos de la diagonal principal y secundaria obtienen el mismo resultado.
Si alguien me puede ayudar estare muy agradecido...
Si falta algun dato mas solo pregunten,
muchas gracias.
Esto se resuelve en dos pasos:

1. Buscar o deducir el algoritmo para hacerlo de forma manual (no sé si esto es a lo que se refiere Ñuño).
2. Traducir tal algoritmo a código.

A mi juicio, el primer paso es el más difícil pero google puede ayudar un poco:

http://es.wikipedia.org/wiki/Cuadrado_m%C3%A1gico

En particular, el método siamés luce bastante sencillo e incluso viene codificado en python que, aunque lo desconozcas, puede darte idea de cómo hacerlo en delphi.

// Saludos
Responder Con Cita
  #4  
Antiguo 15-12-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Ñuño Martínez Ver Mensaje
[edito] Acabo de caer en que estamos en el foro OOP, y eso cambia un poco las cosas.
Lo pasamos a varios, y asunto solucionado
Responder Con Cita
  #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
  #6  
Antiguo 16-12-2011
Andres202010 Andres202010 is offline
Registrado
NULL
 
Registrado: jun 2011
Posts: 3
Poder: 0
Andres202010 Va por buen camino
muchas gracias por responder, y perdon por poner la peticion en cualquier sitio, busque la categoria mas adecuada pero no la encontre, asi que la puse en OPPP, pido disculpas, y agradecer nuevamente a las personas que respondieron :P
Responder Con Cita
Respuesta



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 12:36:18.


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