Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-03-2012
Jusar Jusar is offline
Miembro
NULL
 
Registrado: feb 2012
Posts: 17
Poder: 0
Jusar Va por buen camino
Random implementado en una matriz estatica

Saludos desde Costa Rica. Actualmente me encuentro realizando una matriz que almacene numeros aleatorios utilizando el random, todo perfecto hasta aca lo unico es que me gustaria es crearla pero almacenando parejas de numero.

Ejm:

Código Delphi [-]
void __fastcall TForm1::Button1Click(TObject *Sender)
{
     int mat[2][2];
     for (int i=0;i<2;i++)
         for (int j=0;j<2;j++)
             mat[i][j]= 0;

     int w=0;
     for (int i=0;i<2;i++)
     {
         for (int j=0;j<2;j++)
         {
             int x = random(0-2);
             for (int a=0;a<2;a++)
             {
                 for (int b=0;b<2;b++)
                 {
                     if ( mat[a][b] == x)
                        w++;
                 }
             }
             if (w<=1)
                mat[i][j]=x;
         }
     }

     Label1->Caption=mat[0][0];
     Label2->Caption=mat[0][1];
     Label3->Caption=mat[1][0];
     Label4->Caption=mat[1][1];

}
//---------------------------------------------------------------------------
Responder Con Cita
  #2  
Antiguo 07-03-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola jusar.

Si no entendí mal lo que buscas, creo que podrías hacer:
Código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TSmallPoint Matriz[2][2]; //Si los valores a almacenar son grandes usa TPoint
  randomize();
  /* Cargar */
  for(int f=0; f < 2; f++)
    for(int c=0; c < 2; c++) {
      Matriz[f][c].x = random(2);
      Matriz[f][c].y = random(2);
    }
  /* Mostrar */
  for(int f=0; f < 2; f++)
    for(int c=0; c <2; c++)
      ListBox1->Items->Add(Format("%d %d",
        ARRAYOFCONST((Matriz[f][c].x, Matriz[f][c].y))));
}
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 07-03-2012
Jusar Jusar is offline
Miembro
NULL
 
Registrado: feb 2012
Posts: 17
Poder: 0
Jusar Va por buen camino
Compa de esa manera no si no mas bien realizando una matriz donde me quede algo asi:

Matriz= 0 1 2
2 0 1

Pero con la unica desventaja que ocupo usando random pero no logro hacer que me queden parejas de numeros no se si me explico...
Responder Con Cita
  #4  
Antiguo 07-03-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola jusar.
Código:
Matriz= 0 1 2
        2 0 1
Disculpa pero realmente no te entiendo. Según lo que pusiste arriba, se trataría de una matriz de tres columnas por dos filas, no veo donde encaja eso de las parejas de números...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 07-03-2012 a las 13:47:22.
Responder Con Cita
  #5  
Antiguo 07-03-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Jusar Ver Mensaje
no se si me explico...
Creo que ese es el problema

Trata de explicar lo más detalladamente posible todo el proceso de lo que quieres hacer, puede escribir cuanto te apetezca, no hay limitación alguna, ni cobramos por palabras
Responder Con Cita
  #6  
Antiguo 07-03-2012
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Divide el proceso en dos etapas:

- Primero llenar la matriz con las parejas de números, es decir, aquí garantizas que cada número se almacena por duplicado.
- Después mezclar los elementos, para esto puedes utilizar random para seleccionar dos posiciones de la matriz y las intercambias. Repites esta acción n veces dependiendo del número de elementos de la matriz. A veces con 50 o 100 ciclos es suficiente.

Al final tendrás parejas de números distribuidas aleatoriamente en la matriz, algo similar al juego de memorama

Última edición por Héctor Randolph fecha: 07-03-2012 a las 18:20:34.
Responder Con Cita
  #7  
Antiguo 07-03-2012
Jusar Jusar is offline
Miembro
NULL
 
Registrado: feb 2012
Posts: 17
Poder: 0
Jusar Va por buen camino
Exato tal como lo dice Hector yo que ocupo es realizar una matriz con numeros aleatorios para luego puedo utilizar image y cargar imagenes con los numeros almacenados en la matriz por ejemplo:

Matriz:
2 3 1
3 2 1

entonces con le random el cual me sirve para generar numeros aleatorios ocupo que me los genere lo cual ya se pero lo que ocupo es que el genere los numeros pero que me queden los numeros 2 veces repetidos. Todo poder realizar un juego de memoria y poder las cargar imagenes aleatorias y buscar su respectiva pareja. Pero en esta ocacion lo que cuopo es una condicion que haga que la matriz quede con numeros repetidos... espero haberme explicado...
Responder Con Cita
  #8  
Antiguo 08-03-2012
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Ya tienes la respuesta, llena la matriz con los números por parejas. Digamos que llenas la matriz dentro de una sentencia FOR que tendrá n / 2 ciclos, donde n es el número de elementos de la matriz que siempre deberá ser par.

Tomando tu ejemplo la matriz quedaría de esta forma:

1 1 2
2 3 3

Ahora los mezclas en otro ciclo con x repeticiones.

Aquí la idea es tomar dos elementos de la matriz de forma aleatoria digamos [1,1] y [2,2], los intercambias quedando así.


3 1 2
2 1 3

Si esto lo repites muchas veces todos los elementos quedarán en posiciones aleatorias (revueltos).

Saludos
Responder Con Cita
  #9  
Antiguo 08-03-2012
Jusar Jusar is offline
Miembro
NULL
 
Registrado: feb 2012
Posts: 17
Poder: 0
Jusar Va por buen camino
Hasta el momento lo que tengo es esto codigo pero no logro eso siempre me puede generar o tres 1 o tres 0 o cuatros 1 o 0...

Código Delphi [-]
void __fastcall TForm1::Button1Click(TObject *Sender)
{
     int mat[2][2];
     for (int i=0;i<2;i++)
         for (int j=0;j<2;j++)
             mat[i][j]= 0;

     int w=0;
     for (int i=0;i<2;i++)
     {
         for (int j=0;j<2;j++)
         {
             int x = random(2);
             for (int a=0;a<2;a++)
             {
                 for (int b=0;b<2;b++)
                 {
                     if ( mat[a][b] == x)
                        w++;
                 }
             }
             if (w<2)
             {
                mat[i][j]=x;
                w=0;
             }
         }
     }

     Label1->Caption=mat[0][0];
     Label2->Caption=mat[0][1];
     Label3->Caption=mat[1][0];
     Label4->Caption=mat[1][1];

}
Responder Con Cita
  #10  
Antiguo 08-03-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Jusar.

Primero que nada felicito a Hector por su poder de interpretación

Entonces, más o menos sería:
Código:
const MAXFIL = 2;
const MAXCOL = MAXFIL+1;

int Matriz[MAXFIL][MAXCOL];

void Cargar(int (*m)[MAXCOL])
{
  for(int f=0; f < MAXFIL; f++)
   for(int c=0; c < MAXCOL; c++) {
      m[c][f] = c+1;
      m[c][f+1] = c+2;
    }
}

void Mezclar(int (*m)[MAXCOL])
{
TSmallPoint a,b;
int tmp;
  for (int i=0; i < 100; i++) {
    a.x = random(MAXCOL);
    b.x = random(MAXCOL);
    a.y = random(MAXFIL);
    b.y = random(MAXFIL);
    tmp = Matriz[a.x][a.y];
    m[a.x][a.y] = m[b.x][b.y];
    m[b.x][b.y] = tmp;
  }
}

void Mostrar(TMemo *M)
{
AnsiString s;
  for(int f=0; f < MAXFIL; f++) {
    s = "";
    for(int c=0; c < MAXCOL; c++)
      s = s + IntToStr(Matriz[c][f])+ ' ';
    M->Lines->Add(s);
  }
}

void __fastcall TForm1::FormCreate(TObject *Sender)
{
 Cargar(Matriz);
 Memo1->Clear();
 Memo1->ScrollBars = ssVertical;
 Memo1->Lines->Add("Estado inicial");
 Memo1->Lines->Add("-----------------");
 Mostrar(Memo1);

}

void __fastcall TForm1::btnShowClick(TObject *Sender)
{
 Mezclar(Matriz);
 Memo1->Lines->Add("-----------------");
 Mostrar(Memo1);
}
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta


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
clase estatica D7 FelixInasa OOP 13 17-02-2011 11:48:11
fuzzy implementado en delphi ljrg Varios 4 14-10-2010 16:10:57
variable estatica no muere con el form !!!!!!!!!!! david_uh Varios 5 28-07-2007 01:51:14
.NET es Java pero bien diseñado y mejor implementado roman Noticias 14 22-02-2007 21:43:08
Algoritmo Huffman Implementado En Delphi vespita Internet 8 01-06-2006 19:10:54


La franja horaria es GMT +2. Ahora son las 18:32:26.


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