• C

# setting two double variables equal to the larger of the two

I'm trying to make a program that initializes two numbers and states what they are. And then runs a function that sets both numbers equal to the larger of the two. And then it restates what the numbers are. The result I'm getting is this, which is wrong:

The first number is 0 and the second number is 1075052544
The first number is 0 and the second number is 1075052544

How can I get it to say this:

The first number is 5 and the second number is 10
Now, the first number is 10 and the second number is 10

``````#include <stdio.h>
void larger_of(double * x, double * y);
int main ()
{
double a = 5;
double b = 10;
printf("The first number is %d and the second number is %d\n", a, b);
larger_of(&a,&b);
printf("Now, the first number is %d and the second number is %d\n", a, b);
return 0;
}

void larger_of(double * x, double * y)
{
if (x > y)
*y = *x;
if (y > x)
*x = *y;

}
``````
###### Who is Participating?

Commented:
For double's, you use %f, not %d (which is for ints).

Maybe you should have a look at the reference pages for printf and scanf :

http://cplusplus.com/reference/clibrary/cstdio/printf.html
http://cplusplus.com/reference/clibrary/cstdio/scanf.html

Take special note of the formats explained there.
0

Commented:
Also, in your larger_of function, you have this comparison :

>>         if (x > y)

which won't work as you expect, since x and y are pointers-to-double. They're not the double values themselves, so you're basically comparing their memory addresses, rather than their values.

And this :

>>                 *y = *x;

will copy the double value pointed to by x to the double value pointed to by y. So, both doubles will have the same value after this. Was this intentional, or did you want to swap the values ?
0

Author Commented:
Infinity, I realize that I'm bad at communicating values from a short function to the main function, and obviously you know how to do it. Could you tell me the exact code I would have to use in order to turn the first number and second number into the larger of the two numbers, to get my program to say this:

The first number is 5 and the second number is 10
Now, the first number is 10 and the second number is 10
0

Commented:
amvasquez01, you repeated exactly what I said, with the only addition being the full code - and that's in fact not allowed on this site - we're not allowed to post full-code solutions to assignments. Instead, we guide the asker to find the solution himself.

prebek, I know you already accepted his post, but please ignore it, and try to solve it yourself. It will be a better learning experience for you.

For the same reason as mentioned elsewhere, I'm gonna ask to get this question re-opened.
0

Commented:
My suggestion :

http:#24069687 (Infinity08) : first issue explained
http:#24069693 (Infinity08) : second issue explained
0

Author Commented:
Thank you so much, it's hard to get an answer that shows the correct code rather than explains it :)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.