Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: JulCesa en 22 Noviembre 2011, 16:20 pm



Título: Funcion randomica dev c++
Publicado por: JulCesa en 22 Noviembre 2011, 16:20 pm
Hola necesito una pequeña ayuda con la funcion random(Aleatoria) en dev c++ quiero que este codigo el usuario escoja n y el l arreglo se llene  randomicamente dependiendo el numero que se haya digitado (MI duda esta en el metodo main) o si se puede n randomico y el llenado del vector randomico seria genial, he leido sobre srand rand(); pero no he podido implementarlo
desde ya muchas gracias por su ayuda y por sus respuestas
Citar
#include <cstdlib>
#include <iostream>
using namespace std;
//metodo donde buscamos el elemento mayor
int mayoritario(int *p, int i, int f, int *mayor) {
if(f-i == 0) {
*mayor = p;
return 1;
}
int m = (i+f)/2, mayor1, mayor2, c1, c2;
c1 = mayoritario(p, i, m, &mayor1);
c2 = mayoritario(p, m+1, f, &mayor2);
if(mayor1 == mayor2) {
*mayor = mayor1;
return c1 + c2;
}
else{
if(c1>c2) {
*mayor = mayor1;
return c1-c2;
}
else {
*mayor = mayor2;
return c2-c1;
  }
 }
}

bool comparar(int *p, int n, int mayor) {//comparamos el arreglo con todos los numeros del vector guardados en el arreglo y miramos cual esta repetido
 int c=0;
 for(int i=0; i<n; i++) {
  if(p == mayor) {
   c++;
  }
 }
 return (c>n/2);
}

int main() {
int *p, n;//declaracion
printf("\t\tELEMENTO MAYORITARIO USANDO LA TECNICA DIVIDE Y VENCERAS\n");
printf("\t\t==========Paradigmas Y Tecnicas De Programacion=========\t\n");
printf("Digite El Tamano Del Vector \n");//Mensaje
scanf("%d", &n);//Obtencion del tamaño de datos
p = new int [n];//Creacion del vector
for(int i=0; i<n; i++) {//llenado
printf("Digite El Num %d: ",i);
scanf("%d", &p);
}
 
int mayor, c;
if(mayoritario(p, 0, n-1, &mayor) > 0) {
if(comparar(p, n, mayor)) {
printf("El Elemento Mayoritario Es %d \n ", mayor);
system("PAUSE");
}
else {
printf("No Existe Elemento Mayoritario \n ");
system("PAUSE");
}
}
else {
printf("No Existe Elemento Mayoritario \n");
system("PAUSE");
}
return 0;
}



Título: Re: Funcion randomica dev c++
Publicado por: RyogiShiki en 22 Noviembre 2011, 18:50 pm
Bueno, lo primero es que uses GeSHi envés de citar el código.

En segundo lugar como es eso de que no pudiste usar rand() y srand()? A ver, para generar numeros pseudoaleatorios que no se repitan entre ejecuciones o llamadas a funiones necesitas plantar una semilla, esto se hace con srand, generalmente se usa el tiempo porque es un dato que varia en todo momento, para plantar la semilla haces lo siguiente:

Código
  1. #include <ctime>
  2. #include <cstdlib>
  3.  
  4. srand(time(NULL));
  5.  

Una vez hecho esto puedes obtener números pseudoaleatorios de la siguiente manera:

Código
  1. int random = rand();
  2.  

Ahora si lo que quieres es obtener un numero entro en un rango puedes hacer lo siguiente:

Código
  1. int random = rand() % 100; //Genera números entre 0 y 99
  2. int random2 = rand() % 100 + 1; //Genra numeros de 0 a 100
  3. int random3 = rand() % 10 + 20; // Genera numeros entre 20 y 30
  4.  

Ahora si quieres relenar un arreglo con números aleatorios digamos entre 20 y 30:

Código
  1. #include <cstdlib>
  2. #include <ctime>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. int main() {
  8.    srand(time(NULL));
  9.    int arr[10];
  10.    int random = 0;
  11.  
  12.    for (int i = 0; i < 10; i++) {
  13.        random = rand() % 10 + 20;
  14.        arr[i] = random;
  15.  
  16.        cout << arr[i] << endl;
  17.    }
  18.  
  19.    return 0;
  20. }
  21.  

Saludos


Título: Re: Funcion randomica dev c++
Publicado por: JulCesa en 22 Noviembre 2011, 20:42 pm
RyogiShiki
men te debo la vida muchisisisssisisissssisisisisimas gracias por tu explicacion tan excelente de verdad muchas gracias
jejej y disculpa lo de GeShi


Título: Re: Funcion randomica dev c++
Publicado por: RyogiShiki en 22 Noviembre 2011, 20:49 pm
Bien, por nada. me alegra que te haya sido de ayuda.

Saludos