I am writing a simple function to initialise 3 variables to pesudo
random numbers.
I have a function which is as follows
int randomise( int x, int y, intz)
{
srand((unsigned )time(NULL));
x = rand();
y = rand();
z = rand();
}
And I call this function with
randomise(a,b,c );
However a,b,c do not contain the randomised integers, I understand this
is a problem with the return value of my function,
I have tried
return x,y,z;
But this doesnt work either.
Can anyone point out where my problem is? 41 3760
Materialised wrote: I am writing a simple function to initialise 3 variables to pesudo random numbers.
I have a function which is as follows
int randomise( int x, int y, intz) { srand((unsigned )time(NULL)); x = rand(); y = rand(); z = rand();
} And I call this function with
randomise(a,b,c );
However a,b,c do not contain the randomised integers, I understand this is a problem with the return value of my function, I have tried return x,y,z; But this doesnt work either.
Can anyone point out where my problem is?
Ehem. The first one is that you try to program in C++ without a good
textbook. :-(
First of all, your program has not return value. You do not return
anything. There is no return statement.
The second: how do you expect to return 3 integers in one?
The third: as you wrote the function definition (signature) it takes the
arguments by value, so x,y and z (which you have clearly typed wrong) is a
*copy* of a b and c. Writing into them will write into the copy.
You can take the arguments by reference, then you will be able to change
them. *If* you work in C++. If you do work in C, you will need to take
pointers to them.
--
WW aka Attila
Materialised wrote: I am writing a simple function to initialise 3 variables to pesudo random numbers.
I have a function which is as follows
int randomise( int x, int y, intz) { srand((unsigned )time(NULL)); x = rand(); y = rand(); z = rand();
} And I call this function with
randomise(a,b,c );
However a,b,c do not contain the randomised integers, I understand this is a problem with the return value of my function, I have tried return x,y,z; But this doesnt work either.
Can anyone point out where my problem is?
These are Questions 4.8 and 20.1 in the comp.lang.c
Frequently Asked Questions (FAQ) list http://www.eskimo.com/~scs/C-faq/top.html
-- Er*********@sun .com
Materialised wrote: I am writing a simple function to initialise 3 variables to pesudo random numbers.
I have a function which is as follows
int randomise( int x, int y, intz) { srand((unsigned )time(NULL)); x = rand(); y = rand(); z = rand();
} And I call this function with
randomise(a,b,c );
However a,b,c do not contain the randomised integers, I understand this is a problem with the return value of my function, I have tried return x,y,z; But this doesnt work either.
Can anyone point out where my problem is?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void randomise(int *x, int *y, int *z)
{
srand((unsigned ) time(NULL));
*x = rand();
*y = rand();
*z = rand();
}
int main(void)
{
int a, b, c;
randomise(&a, &b, &c);
printf("%d %d %d\n", a, b, c);
return 0;
}
--
Martin Ambuhl
WW wrote: Materialised wrote:
I am writing a simple function to initialise 3 variables to pesudo random numbers.
I have a function which is as follows
int randomise( int x, int y, intz) { srand((unsign ed)time(NULL)); x = rand(); y = rand(); z = rand();
} And I call this function with
randomise(a,b ,c);
However a,b,c do not contain the randomised integers, I understand this is a problem with the return value of my function, I have tried return x,y,z; But this doesnt work either.
Can anyone point out where my problem is?
Ehem. The first one is that you try to program in C++ without a good textbook. :-(
First of all, your program has not return value. You do not return anything. There is no return statement.
The second: how do you expect to return 3 integers in one?
The third: as you wrote the function definition (signature) it takes the arguments by value, so x,y and z (which you have clearly typed wrong) is a *copy* of a b and c. Writing into them will write into the copy.
You can take the arguments by reference, then you will be able to change them. *If* you work in C++. If you do work in C, you will need to take pointers to them.
Thanks for your help, I realised my error right after posting
int randomise()
{
int x;
srand((unsigned )time(NULL));
x = rand();
return x;
}
and in main
a = randomise();
b = randomise();
c = randomise();
Materialised wrote: WW wrote:
Materialised wrote:
I am writing a simple function to initialise 3 variables to pesudo random numbers.
I have a function which is as follows
int randomise( int x, int y, intz) { srand((unsigned )time(NULL)); x = rand(); y = rand(); z = rand();
} And I call this function with
randomise(a,b,c );
However a,b,c do not contain the randomised integers, I understand this is a problem with the return value of my function, I have tried return x,y,z; But this doesnt work either.
Can anyone point out where my problem is? Ehem. The first one is that you try to program in C++ without a good textbook. :-(
First of all, your program has not return value. You do not return anything. There is no return statement.
The second: how do you expect to return 3 integers in one?
The third: as you wrote the function definition (signature) it takes the arguments by value, so x,y and z (which you have clearly typed wrong) is a *copy* of a b and c. Writing into them will write into the copy.
You can take the arguments by reference, then you will be able to change them. *If* you work in C++. If you do work in C, you will need to take pointers to them. Thanks for your help, I realised my error right after posting
int randomise() { int x; srand((unsigned )time(NULL)); x = rand(); return x; }
and in main
a = randomise(); b = randomise(); c = randomise();
No, you don't want to do that either.
Calling `srand()' multiple times like that (i.e. for each call to
`rand()') will not make the numbers any more random, and may do
exactly the opposite.
Call srand() once...
....and please reread the suggestions elsethread.
HTH,
--ag
--
Artie Gold -- Austin, Texas
Oh, for the good old days of regular old SPAM.
In <bn************ @ID-204621.news.uni-berlin.de> Materialised <ma**********@p rivacy.net> writes: I am writing a simple function to initialise 3 variables to pesudo random numbers.
I have a function which is as follows
int randomise( int x, int y, intz) { srand((unsigne d)time(NULL)); x = rand(); y = rand(); z = rand();
} And I call this function with
randomise(a,b, c);
However a,b,c do not contain the randomised integers, I understand this is a problem with the return value of my function, I have tried return x,y,z; But this doesnt work either.
Can anyone point out where my problem is?
Sure, both your favourite C book and the FAQ can.
The *right* way of solving this problem in C is by using a structure:
struct random { int x, y, z; };
struct random randomise(void)
{
struct random t;
srand((unsigned )time(NULL)); /* this function call doesn't belong
here, unless you call this function exactly once */
t.x = rand();
t.y = rand();
t.z = rand();
return t;
}
Ignore any advice recommending the usage of three pointers in the
function's interface. Such interfaces are evil, in general, even if, in
this particular case, there is no big deal. Functions should not use
their parameters as a way of returning back information to the caller.
Dan
--
Dan Pop
DESY Zeuthen, RZ group
Email: Da*****@ifh.de
In comp.lang.c Dan Pop <Da*****@cern.c h> wrote: Ignore any advice recommending the usage of three pointers in the function's interface. Such interfaces are evil, in general, even if, in this particular case, there is no big deal. Functions should not use their parameters as a way of returning back information to the caller.
Why is this? In what circumstances can pointers lead to tragedy?
--
Christopher Benson-Manica | I *should* know what I'm talking about - if I
ataru(at)cybers pace.org | don't, I need to know. Flames welcome.
WW wrote: You can take the arguments by reference, then you will be able to change them. *If* you work in C++. If you do work in C, you will need to take pointers to them.
Where did the OP say he was working in C++?
Brian Rodenborn
WW wrote: Ehem. The first one is that you try to program in C++ without a good textbook. :-(
C++ This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
by: Krackers |
last post by:
How do you write a function which returns a reference to an array. I
can only get a function to return a copy of the array itself. I've had
a look at some other threads in this group an the return value of a
function acts like 'by Val' returning the value only (except for
objects) can you make it return a reference instead?
cheers,
Krackers
|
by: mjm |
last post by:
Folks,
Stroustrup indicates that returning by value can be faster than
returning by reference but gives no details as to the size of the
returned object up to which this holds.
My question is up to which size m would you expect
vector<double> returns_by_value()
{
|
by: Dr John Stockton |
last post by:
What are the best ways of returning multiple results from a subroutine ?
I've been using
... return }
which is inelegant.
I'm used to Pascal's
procedure X(const A, B : integer; var C, D : byte) ;
where A, B are inputs only, and C, D are in/out.
|
by: Roland Hall |
last post by:
Is there a way to return multiple values from a function without using an
array? Would a dictionary object work better?
--
Roland Hall
/* This information is distributed in the hope that it will be useful, but
without any warranty; without even the implied warranty of merchantability
or fitness for a particular purpose. */
Technet Script...
|
by: Guha |
last post by:
I have a problem with returning a 2D array using a function which is
called in main(). The piece of the code is given below. This is a test
code only.
#include"stdio.h"
#include"alloc.h"
void main()
{
| |
by: Karl O. Pinc |
last post by:
I want to return multiple values, but not a set, only a single row,
from a
plpgsql function and I can't seem to get it to work. (I suppose I'd be
happy to return a set, but I can't seem to make that work either.
Anyway,
what's wrong with this?)
Version is:
$ rpm -q postgresql
|
by: Fabian Steiner |
last post by:
Hello!
I have got a Python "Device" Object which has got a attribute (list)
called children which my contain several other "Device" objects. I
implemented it this way in order to achieve a kind of parent/child
relationship.
Now I would like to get all children of a given "Device" object and
thought that it would be the best way to use...
|
by: scparker |
last post by:
Hello,
We have a stored procedure that does a basic insert of values. I am
then able to retrieve the ID number created for this new record. We are
currently using ASP.NET 2.0 and use N-Tier Architecture.
The Stored Procedures are used through TableAdaptors, which in turn are
used by Class Files.
I wish to be able to return this new ID...
|
by: anuptosh |
last post by:
Hi,
I have been trying to run the below example to get a Oracle Array as an output from a Java code. This is an example I have found on the web. But, the expected result is that the code should return me Array element type code 1, but it is returning me type code 12 and the array in a junk or unreadable format . Our environment is JDK 1.4,...
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main...
|
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed.
This is as boiled down as I can make it. ...
| |
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the...
|
by: agi2029 |
last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then...
|
by: conductexam |
last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one.
At the time of converting from word file to html my equations which are in the word document file was convert...
|
by: TSSRALBI |
last post by:
Hello
I'm a network technician in training and I need your help.
I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs.
The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols.
I succeeded, with both firewalls in...
|
by: 6302768590 |
last post by:
Hai team
i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
|
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
| |
by: bsmnconsultancy |
last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating...
| |