Calculated values from different functions to a single function.
-
I hope and may I give a wrong explanation. I'll try to give an example. Here it is. Say I have following functions.
void functionOne(int x, int y) { // Do some work and find some values, // say int a, int b // Need to send those values to mainCal() } void functionTwo() { // Do some work and find some values, // say double dd, // Need to send those values to mainCal() }
Now what I want to do is, use those calculated values inside another function for another process.void mainCal(int i, int j, double k) { // Using i, j, k // Do another process }
I think now my question is clear to you :)I appreciate your help all the time... Eranga :)
It doesn't look like you are using
x
,y
anddd
inminCal()
. But is that just what you want? Why can't you simply use global variables? ...if only I understood your question right...
Nobody can give you wiser advice than yourself. - Cicero .·´¯`·->ßRÅhmmÃ<-·´¯`·.
-
Hmm. Since this is a C++ forum I am going to assume you are using C++. Here's one way of doing it:
void functionOne( int x, int y, int& a, int& b )
{
// do some work and initialize "a" and "b"
}void functionTwo( double& dd )
{
// do some work and initialize "dd"
}void mainCal( int i, int j, double k )
{
functionOne( 1, 2, i, j );
functionTwo( k );
}The key thing to note here is that
a
,b
anddd
are passed by reference tofunctionOne
andfunctionTwo
. -- modified at 4:34 Monday 12th November, 2007 Fixed typo where only 2 params where supplied tofunctionOne
when it expects 4.-- gleat http://blogorama.nerdworks.in[^] --
That's make sense to me, thanks. But I have one question. I want to use x, y and dd inside the mainCal(). here,
gleat wrote:
void functionOne( int x, int y, int& a, int& b ) { // do some work and initialize "a" and "b" }
you have use two reference, and that's clear to me. Then I want to call mainCal() there and send x and y. So what you have done here,
gleat wrote:
void mainCal( int i, int j, double k ) { functionOne( i, j ); functionTwo( k ); }
is not clear for me....
I appreciate your help all the time... Eranga :)
-
Hi all, I don't know how far my question is obvious to you. Say I have few functions, and they return different types of values. I want to use them inside an other single function. How should I do that. Any clue.
I appreciate your help all the time... Eranga :)
typedef struct tagRET_VAL { int code; void* pValue; }RET_VAL, *PRETVAL; enum CODE{ CODE_INT, CODE_STRING }; void fun1() { int a = 10; RET_VAL rv; rv.code = CODE_INT; rv.pValue = &a; return &rv; } void fun2() { char s[] = "hello"; RET_VAL rv; rv.code = CODE_STRING; rv.pValue = s; return &rv; } void GetValue( PRET_VAL pRV ) { switch( pRV->code ) { case CODE_INT: // do something with (int *)pRV->pValue .... break; case CODE_STRING: // do something with (char *)pRV->pValue ... break; } }
-
It doesn't look like you are using
x
,y
anddd
inminCal()
. But is that just what you want? Why can't you simply use global variables? ...if only I understood your question right...
Nobody can give you wiser advice than yourself. - Cicero .·´¯`·->ßRÅhmmÃ<-·´¯`·.
brahmma wrote:
It doesn't look like you are using x, y and dd in minCal(). But is that just what you want?
Exactly that is what I want to do is..
brahmma wrote:
Why can't you simply use global variables?
Actually this is a iterative process. I mean first sends some data to functionOne() and functionTwo(), and do calculations and those values need to use inside the mainCal().
I appreciate your help all the time... Eranga :)
-
That's make sense to me, thanks. But I have one question. I want to use x, y and dd inside the mainCal(). here,
gleat wrote:
void functionOne( int x, int y, int& a, int& b ) { // do some work and initialize "a" and "b" }
you have use two reference, and that's clear to me. Then I want to call mainCal() there and send x and y. So what you have done here,
gleat wrote:
void mainCal( int i, int j, double k ) { functionOne( i, j ); functionTwo( k ); }
is not clear for me....
I appreciate your help all the time... Eranga :)
Sorry. My bad! I assumed that
x
andy
were inputs tofunctionOne
and then forgot to supply those parameters when calling it! If you do not have any other input arguments you can drop those, i.e., you could something like this:void functionOne( int& a, int& b )
{
// do some work and initialize "a" and "b"
}void functionTwo( double& dd )
{
// do some work and initialize "dd"
}void mainCal( int i, int j, double k )
{
functionOne( i, j );
functionTwo( k );
}-- gleat http://blogorama.nerdworks.in[^] --
-
Hi all, I don't know how far my question is obvious to you. Say I have few functions, and they return different types of values. I want to use them inside an other single function. How should I do that. Any clue.
I appreciate your help all the time... Eranga :)
-
brahmma wrote:
It doesn't look like you are using x, y and dd in minCal(). But is that just what you want?
Exactly that is what I want to do is..
brahmma wrote:
Why can't you simply use global variables?
Actually this is a iterative process. I mean first sends some data to functionOne() and functionTwo(), and do calculations and those values need to use inside the mainCal().
I appreciate your help all the time... Eranga :)
And what is the problem with global/class_member variables? You can use them along your class, or between classes, without a problem.
Greetings. -------- M.D.V. If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you “The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet.” - Michael A. Jackson ;)
-
Sorry. My bad! I assumed that
x
andy
were inputs tofunctionOne
and then forgot to supply those parameters when calling it! If you do not have any other input arguments you can drop those, i.e., you could something like this:void functionOne( int& a, int& b )
{
// do some work and initialize "a" and "b"
}void functionTwo( double& dd )
{
// do some work and initialize "dd"
}void mainCal( int i, int j, double k )
{
functionOne( i, j );
functionTwo( k );
}-- gleat http://blogorama.nerdworks.in[^] --
But pal, I've confusing on this also :(
gleat wrote:
functionOne( i, j );
Can't I call the mainCal() inside the functionOne() as,
mainCal(a, b)
I appreciate your help all the time... Eranga :)
-
brahmma wrote:
It doesn't look like you are using x, y and dd in minCal(). But is that just what you want?
Exactly that is what I want to do is..
brahmma wrote:
Why can't you simply use global variables?
Actually this is a iterative process. I mean first sends some data to functionOne() and functionTwo(), and do calculations and those values need to use inside the mainCal().
I appreciate your help all the time... Eranga :)
I don't understand why can't you use global variables.
Nobody can give you wiser advice than yourself. - Cicero .·´¯`·->ßRÅhmmÃ<-·´¯`·.
-
But pal, I've confusing on this also :(
gleat wrote:
functionOne( i, j );
Can't I call the mainCal() inside the functionOne() as,
mainCal(a, b)
I appreciate your help all the time... Eranga :)
You can call any function from any other function. The point is to understand the use of passing parameters by reference. If you have a function declared like so for instance:
void foo( int& a )
{
a = 10;
}And you called it like so from somewhere:
int i;
foo( i );
cout<It'd print10
. See here[^] for more information.--
gleat
http://blogorama.nerdworks.in[^] -
And what is the problem with global/class_member variables? You can use them along your class, or between classes, without a problem.
Greetings. -------- M.D.V. If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you “The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet.” - Michael A. Jackson ;)
It's true pal. But if I change my code now it can be a real mess for me. Because I have to change lots of coding parts in my code.
I appreciate your help all the time... Eranga :)
-
It's true pal. But if I change my code now it can be a real mess for me. Because I have to change lots of coding parts in my code.
I appreciate your help all the time... Eranga :)
I don't think it's so difficult. Just declaring the variables which you want to access from multiple functions globally will do all the magic for you. That's the reason why global variables exist. Do remember that global and static variables can be bad if you use them carelessly.
Nobody can give you wiser advice than yourself. - Cicero .·´¯`·->ßRÅhmmÃ<-·´¯`·.
-
brahmma wrote:
It doesn't look like you are using x, y and dd in minCal(). But is that just what you want?
Exactly that is what I want to do is..
brahmma wrote:
Why can't you simply use global variables?
Actually this is a iterative process. I mean first sends some data to functionOne() and functionTwo(), and do calculations and those values need to use inside the mainCal().
I appreciate your help all the time... Eranga :)
Ok, here is a real scenario may that why I have use this. Mainly I've read a file and find different data from it, on different functions. On the same function I store them in a database. That mean I've store data on the database in different places(ie: on different functions). What I want to do is, store all the data on a single function. I think it is clear to me, when I look at the code. May be I can use those codes later.
I appreciate your help all the time... Eranga :)
-
You can call any function from any other function. The point is to understand the use of passing parameters by reference. If you have a function declared like so for instance:
void foo( int& a )
{
a = 10;
}And you called it like so from somewhere:
int i;
foo( i );
cout<It'd print10
. See here[^] for more information.--
gleat
http://blogorama.nerdworks.in[^]Ok, I got it. Thanks for the link as well.
I appreciate your help all the time... Eranga :)
-
It's true pal. But if I change my code now it can be a real mess for me. Because I have to change lots of coding parts in my code.
I appreciate your help all the time... Eranga :)
Declare the variables at the header, initialize them in the constructor and use "search and replace" to change the names is a lot of work? What do u prefer? Do that "lot" of work now? Or having scope/access problems in every thing you code afterwards?
Greetings. -------- M.D.V. If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you “The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet.” - Michael A. Jackson ;)
-
Declare the variables at the header, initialize them in the constructor and use "search and replace" to change the names is a lot of work? What do u prefer? Do that "lot" of work now? Or having scope/access problems in every thing you code afterwards?
Greetings. -------- M.D.V. If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you “The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet.” - Michael A. Jackson ;)
Now actually I have no idea what to do... :| Here is a one function I've used.
void CSRFDBDlg::GetMess(int length, char * buffer, ADODB::_RecordsetPtr pRecSet) { UpdateData(TRUE); _variant_t vtData; // VARIANT data type long nRetLength = 0; // Dummy value _variant_t vAppendChunck = BinaryToVariant((BYTE*)buffer, length, nRetLength); pRecSet->Fields->GetItem("Bio_Data")->AppendChunk(vAppendChunck); vtData.vt = VT_I2; vtData.iVal = (int)nRetLength; pRecSet->Fields->GetItem("Bio_Size")->PutValue(vtData); }
Here I have two values to store in the database.I appreciate your help all the time... Eranga :)