Re: WHy my program doesn't work
On 2007-03-24 14:02, Colander wrote:
On Mar 24, 1:30 pm, "Colander" <colan...@gmail.com> wrote:
On Mar 24, 11:07 am, "Duardo Mattheo" <dudordoo123...@yahoo.dk> wrote:
#include<iostream.h>
#include<stdlib.h>
void main(void)
{
unsigned int u=int(1 000 000 000*rand()%RAND_MAX);
cout<<"Money summed = "<<(u);
}
thank you,
Duardo
Because you have to write
'std::cout' where you wrote 'cout'.
Because you can't write a number with spaces in it.
Because main has to return int.
So the next will work:
#include<iostream>
#include<stdlib.h>
int main(void)
{
unsigned int u=int(1000000000*rand()%RAND_MAX);
std::cout<<"Money summed = "<<(u);
return 0;
}
(Replying to one selfs, what does the world do to me)
Now that we have the systax right, we can look at wat you are trying
to do.
I guess you want a random number between 0 or 1 and 1000000000.
This is not what the programme does....
Please lookup srand and rand in your manual.
srand is a function that will give you a new/different random number
each time you run your progrogramme.
Doing a modulo operation makes sure that a number is in a range, in
your case the range will be [0, RAND_MAX), and not [0, 1000000000).
And I'd like to point out that the range of the values output by rand
already is [0, RAND_MAX], after all that is what RAND_MAX means, the max
number that rand can output. So the modulo (%) operator is not needed.
Perhaps a / was intended so that the value will be between 0 and 1000000000?
Notice also that you need to seed rand before usage, or there's a great
chance that it will return the same value each time you run the
application, you can use the current time to get a quite good (but not
cryptographically secure) seed:
#include <iostream>
#include <cstdlib>
#include <ctime>
int main()
{
srand(time(0));
unsigned int nr = static_cast<unsigned int>(1000000000 *
rand() / double(RAND_MAX)
);
std::cout << nr;
return 0;
}
--
Erik Wikstr?m