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 Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-09-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 12
aguml Va por buen camino
Random_Suffle en C++Builder???

hola amigos, hace tiempo haciendo pruebas con rand y Random para barajar una matriz de enteros alguien me mostro un codigo que usaba una funcion llamada Random_Suffle que simplificaba mucho el trabajo. Juraria que era una funcion de c++builder pero no encuentro informacion ni ejemplos sobre esa funcion de builder. ¿Alguien puede pasarme info al respecto?
Responder Con Cita
  #2  
Antiguo 13-09-2014
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 aguml.
Cita:
Empezado por aguml Ver Mensaje
... Juraria que era una funcion de c++builder pero no encuentro informacion ni ejemplos sobre esa funcion de builder. ¿Alguien puede pasarme info al respecto?
En realidad random_shuffle es una función de de la librería <algorithm> de C++ y por supuesto, C++ Builder la soporta.

Ejemplo:
Código PHP:
#include <iostream>
#include <algorithm>

using namespace std;

int main(){

  
int v[3][3] = {1,2,3,
                 
4,5,6,
                 
7,8,9};

  
cout << "Matriz original" << endl;
  for(
int f 03f++) {
    for(
int c 03c++)
      
cout << v[f][c] << ",";
    
cout << endl;
  }

  
random_shuffle(&v[0][0], &v[3][3]);

  
cout << endl << "Matriz modificada" << endl;
   for(
int f 03f++) {
    for(
int c 03c++)
      
cout << v[f][c] << ",";
    
cout << endl;
  }

  
cin.get();
  return 
0;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 14-09-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 12
aguml Va por buen camino
¿y si quisiera barajar una cadena? Por ejemplo "Hola mundo" para que hiciera algo como "lo mHaudon", veo que en tu ejemplo lo hace con enteros y no se especifica el tamaño del dato a barajar (con tamaño me refiero a char, int, double, int64...).
Responder Con Cita
  #4  
Antiguo 14-09-2014
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 aguml.
Cita:
Empezado por aguml Ver Mensaje
¿y si quisiera barajar una cadena? Por ejemplo "Hola mundo" para que hiciera algo como "lo mHaudon"...
Código PHP:
#include <iostream>
#include <algorithm>
#include <string>

using namespace std;

int main() {
  
string str;
  
cout << "Ingrese una frase: ";
  
getline(cinstr);

  
random_shuffle(str.begin(), str.end());

  
cout << str << endl;

  
cin.get();
  return 
0;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 15-09-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 12
aguml Va por buen camino
O_o ¿Entonces la funcion random_suffle detecta el tipo de array? Porque he visto que en este caso le pasas la direccion al primer caracter y del ultimo del string ¿Como puede saber el programa que se trata de barajar chars, ints, dwords, int64 u otros si no lo indicamos en ninguna parte de la funcion? Por ejemplo, si yo creara un array de estructuras y le paso la direccion a la primera y a la ultima ¿Como va a saber el tamaño de la estructura?
Responder Con Cita
  #6  
Antiguo 15-09-2014
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 aguml.
Cita:
Empezado por aguml Ver Mensaje
O_o ¿Entonces la funcion random_suffle detecta el tipo de array? Porque he visto que en este caso le pasas la direccion al primer caracter y del ultimo del string ¿Como puede saber el programa que se trata de barajar chars, ints, dwords, int64 u otros si no lo indicamos en ninguna parte de la funcion? Por ejemplo, si yo creara un array de estructuras y le paso la direccion a la primera y a la ultima ¿Como va a saber el tamaño de la estructura?
La respuesta a esa pregunta la vas a encontra leyendo sobre Templates.

Un ejemplo típico:
Código PHP:
#include <iostream>
#include <string>

using namespace std;

template <typename Type>
Type max(Type xType y) {
  return (
y) ? x;
}

int main() {
  
int i1=5i2=2;
  
bool b1=trueb2=false;
  
string s1="Ana"s2="Juan";

  
cout << max(i1i2) << endl;
  
cout << boolalpha << max(b1b2) << endl;
  
cout << max(s1s2) << endl;

  
cin.get();

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 18-09-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 12
aguml Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola aguml.

En realidad random_shuffle es una función de de la librería <algorithm> de C++ y por supuesto, C++ Builder la soporta.

Ejemplo:
Código PHP:
#include <iostream>
#include <algorithm>

using namespace std;

int main(){

  
int v[3][3] = {1,2,3,
                 
4,5,6,
                 
7,8,9};

  
cout << "Matriz original" << endl;
  for(
int f 03f++) {
    for(
int c 03c++)
      
cout << v[f][c] << ",";
    
cout << endl;
  }

  
random_shuffle(&v[0][0], &v[3][3]);

  
cout << endl << "Matriz modificada" << endl;
   for(
int f 03f++) {
    for(
int c 03c++)
      
cout << v[f][c] << ",";
    
cout << endl;
  }

  
cin.get();
  return 
0;

Saludos
amigo he estado probando tus codigos y en este tengo problemas, me corrompe los datos del array y creo que desborda el buffer del array y coge datos que no le pertenecen. ¿lo has probado?
Responder Con Cita
  #8  
Antiguo 18-09-2014
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 aguml.
Cita:
Empezado por aguml Ver Mensaje
amigo he estado probando tus codigos y en este tengo problemas, me corrompe los datos del array y creo que desborda el buffer del array y coge datos que no le pertenecen. ...
A traves de los mensajes he notado que tu Builder te trae muchos problemas de compabilidad con los códigos publicados, ¿ Has probado de reinstalarlo ?
Cita:
Empezado por aguml Ver Mensaje
...¿lo has probado?
Y si, siempre que no sea una trivialidad (una o dos líneas) pruebo el código que publico, así como también lo guardo en una carpeta "ClubDelphi\nombre_usuario" por si alguién llegara a necesitarlo mas tarde. Precisamente lo acabo de buscar y te adjunto los fuentes comprimidos.

Saludos
__________________
Daniel Didriksen

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

Última edición por ecfisa fecha: 25-09-2014 a las 03:04:43.
Responder Con Cita
  #9  
Antiguo 18-09-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 12
aguml Va por buen camino
A mi tu codigo tal cual me funciona, el problema es cuando intento pasarlo a la vcl. Hice esto:
Código PHP:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
        
int array[3][3]={1,2,3,
                         
4,5,6,
                         
7,8,9};

        
AnsiString aux="";

        for(
int f 03f++) {
                for(
int c 03c++)
                        
aux += AnsiString(array[f][c]) + ",";
                
aux += '\n';
        }

        
ShowMessage(aux);

        
random_shuffle(&array[0][0], &array[3][3]);

        
aux="";

        for(
int f 03f++) {
                for(
int c 03c++)
                        
aux += AnsiString(array[f][c]) + ",";
                
aux += '\n';
        }
        
ShowMessage(aux);

Solo cambio la manera de mostrar el resultado y con eso ya no funciona correctamente.
Responder Con Cita
  #10  
Antiguo 18-09-2014
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 aguml.

Pero, no habías comentado que estabas implementando la función en un proyecto con interfaz gráfica ...

Usala de este modo:
Código PHP:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 
srand (time(0));
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  
int v[3][3] = {{1,2,3}, {4,5,6}, {7,8,9}};
  
String s;

  
Memo1->Lines->Clear();
  
Memo1->Lines->Add("Matriz original");
  for(
int f 03f++) {
    
"";
    for(
int c 03c++)
      
String(v[f][c]) +",";
    
Memo1->Lines->Add(s);
  }
  
Memo1->Lines->Add("");
  
Memo1->Lines->Add("Matriz modificada");

  
random_shuffle(&*v[0], &*v[3]);

  for(
int f 03f++) {
    
"";
    for(
int c 03c++)
      
IntToStr(v[f][c]) +",";
    
Memo1->Lines->Add(s);
  }

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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
Funciona en C++ Builder 6 y no en C++ Builder XE dmartinezn C++ Builder 1 07-05-2012 21:08:42
.DBP con c++ builder 6 LuisMiguel C++ Builder 2 22-03-2012 21:34:46
c++ builder anoniboxx C++ Builder 3 29-04-2010 21:17:36
SQL Builder josevaldez Conexión con bases de datos 0 14-07-2005 14:58:00
Builder X Sonic C++ Builder 1 22-12-2004 16:59:48


La franja horaria es GMT +2. Ahora son las 17:38:14.


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