Ver la versión completa : [Ayuda] Como genero un numero aleatorio de 13 cifras en c++ ???
cannavaro
07/01/2009, 14:26
Estoy haciendo un proyecto de mi escuela pero me hace falta una funcion que me genere un numero aleatorio de 13 cifras en c++, por favor tirenme un cable en esto
gracias
utiliza la funcion random() o rand() (no se como se lama exactamente) para generar un numero entre 0 y 1. Multiplicalo por diez y truncalo con trunc
Despues, repite la operacion, y lo multiplicas con 10
pseudocodigo
y=0
for i=1 to 13 do
{
x=random()
x=x*10
x=trunc(x)
y=y+x^(i-1)
}
DMusta1ne
07/01/2009, 15:20
¡Gracias Jurk!
¡De nada monstruo!
Que practica mas rara, un entero de 32bits llega hasta los 4 mil millones, esto es 10 cifras.
cannavaro
07/01/2009, 17:41
utiliza la funcion random() o rand() (no se como se lama exactamente) para generar un numero entre 0 y 1. Multiplicalo por diez y truncalo con trunc
Despues, repite la operacion, y lo multiplicas con 10
pseudocodigo
y=0
for i=1 to 13 do
{
x=random()
x=x*10
y=y+x^(i-1) ////man esta parte de aqui no la entiendo, igual que
}
y=y+x^(i-1) ////man esta parte de aqui no la entiendo, igual que lo que me pusistes arriba de trunc, si me pudieran dar el codigo en c++, no deve ser muy largo, otra cosa en un edit no se puede poner un numero de mas de 10 caracteres???
editado
< - >
y=0
for i=1 to 13 do
{
x=random()
x=x*10
x=trunc(x)
y=y+x^(i-1)
}
lo del edit (un TextControl o algo parecido) sera porque con 32bit solo se llega hasta 4.294.967.296 o lo que es lo mismo 10 cifras.
una version con strings, despues lo conviertes a lo que quieras.
std::string numero;
for ( int i=0; i<13; ++i )
numero.append('0' + 10*rand()/RAND_MAX);
rand() te genera un entero entre 0 y RAND_MAX (mira la documentacion)
puede que sea necesario hacer un casting a char despues de hacer la suma ('0' + xxx), ademas habria que cambiar el codigo por si la primera cifra es cero genere una nueva. Eso se deja como ejercicio[wei] (siempre he odiado cuando en los libros ponia eso)
x^y es elevar un numero a la potencia y
truncar el quitar los numeros que hay despues de la coma
Espero que esta explicacion sea de ayuda, ya que yo me llevo mejor con Pascal que con c++
editado
< - >
y=0
for i=1 to 13 do
{
x=random()
x=x*10
x=trunc(x)
y=y+x^(i-1)
}
deberia ser
y= y + x *10 ^ i-1;
suponiendo que ^ sea elevar a la potencia n, ya que en C/C++ es un or exclusivo (XOR de bits para los amigos)
¡De nada monstruo!
Jurk, no postees con la cuenta de DMusta1ne!!
x^y es elevar un numero a la potencia y
truncar el quitar los numeros que hay despues de la coma
Espero que esta explicacion sea de ayuda, ya que yo me llevo mejor con Pascal que con c++
Pero te pasa lo mismo que en Pascal, me parece que a menos que compile en 64 bits no te cabe un número de 13 cifras en un entero largo y no se yo si aún así.
Para mi que lo que le han pedido sin decírselo es que se haga una clase que le permita trabajar con dígitos de mayor longitud que un entero largo y que en esa clase incluya un método para generar un número aleatorio perteneciente a esa clase.
Tendría que implementar el producto y el resto de funciones matemáticas elementales y si se aburre demasiado la potencia (a parir del producto es lo más fácil).
NO le habrán explicado listas enlazadas hace poco, porque suena al típico problema relacionado.
Yo tambien creo que tendrá que usar un vector, lista o cadena (a gusto del consumidor).
Supongo que el proximo ejercicio será crear una clase y sobrecargar los operadores.
Creo que alguna vez hice alguna practica de ese estilo, en estructura de datos.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.