• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 315
  • Last Modified:

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;
	
}

Open in new window

0
prebek
Asked:
prebek
  • 4
  • 2
2 Solutions
 
Infinity08Commented:
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
 
Infinity08Commented:
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
 
prebekAuthor 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
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
Infinity08Commented:
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
 
Infinity08Commented:
My suggestion :

http:#24069687 (Infinity08) : first issue explained
http:#24069693 (Infinity08) : second issue explained
0
 
prebekAuthor Commented:
Thank you so much, it's hard to get an answer that shows the correct code rather than explains it :)
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 4
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now