Trying to use C++ to solve a math problem
 CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com

Thread: Trying to use C++ to solve a math problem

1. Junior Member
Join Date
Jan 2013
Posts
2

Trying to use C++ to solve a math problem

a=40; b=30; c=10;
d=a^2-b^2;f=2*c^2*d*sqrt(d^2/27+c^4);
g=d^3/27+2*c^4*d;h=d/3+(g+f)^(1/3)+(g-f)^(1/3);
j=sqrt(c^2-d+h);k=sqrt((2*c*d+2*c^3)/j+2*c^2-d-h);
m=(c+j+k)/2;sqrt(b^2-m^2)

I had this riddle to solve and I know the answer to be
around ~ 12.31185723778668829963

What steps can i go about to get this to compute this problem without doing the work for this problem and other problems similar to this?
I'm not used to c++ and just need help with initialization and outputting the answer I got.

Its based off the very old riddle if anyone cares :

http://en.wikipedia.org/wiki/Crossed_ladders_problem

2. Elite Member Power Poster
Join Date
Apr 2000
Location
Belgium (Europe)
Posts
4,626

Re: Trying to use C++ to solve a math problem

You would first turn it from a set of flat mathematical equations/rules into an actual set of logic steps

How would you solve this without a computer and with only a pen and a sheet of paper. That's you're first step. Then you turn the "method" of how you solved it manually into a program.

3. Elite Member
Join Date
May 2009
Posts
2,413

Re: Trying to use C++ to solve a math problem

Originally Posted by OmeshPH12
I'm not used to c++ and just need help with initialization and outputting the answer I got.
Use variables and number literals of type double throughout.

Declare double variables like this,

double a=40.0;

or several on one line

double b=30.0, c=10.0;

All double literals should have a . in them otherwise things may go wrong. For example 1/3 may evaluate to 0 because you may get integer division whereas 1.0/3.0 will evaluate to 0.3333333333..... as it should.

To output a number you can do,

std::cout << a << std::endl;

or several like

std::cout << b << ", " << c << std::endl;

To calculate powers you need to use the pow function (or multiply the number several times with itself like say x^3 = x*x*x).

Make sure to include the necessary header files.
Last edited by nuzzle; January 11th, 2013 at 07:54 AM.

4. Junior Member
Join Date
Jan 2013
Posts
2

Re: Trying to use C++ to solve a math problem

Okay thank OReubens and nuzzle that helped alot.
The only header ill need should be <cmath> and <iostream> since its just calculations and outputting.

5. Elite Member
Join Date
May 2009
Posts
2,413

Re: Trying to use C++ to solve a math problem

Originally Posted by OmeshPH12
I had this riddle to solve and I know the answer to be
around ~ 12.31185723778668829963
Note that the precision of a double is only about 17 digits (including all digits before and after the decimal dot). Specifying more digits is superfluous.

Anyway what's that number above and how did you arrive at it?

Looking at the site you referred to you have these relations,

1/h = 1/A + 1/B
A^2 = b^2 - w^2
B^2 = a^2 - w^2

Solved for h you get this formula,

h = 1 / (1/sqrt(b^2 - w^2) + 1/sqrt(a^2 - w^2))

where a and b are the ladder lengths, h is the height above the alley floor up to where the ladders cross, and w is the alley width.

I suppose the number you posted is w, isn't it? When it's entered into the formula,
Code:
```double a=40.0, b=30.0, w=12.311857237786688;
double h = 1.0 / (1.0/std::sqrt(b*b-w*w) + 1.0/std::sqrt(a*a-w*w));
std::cout << h << std::endl;```
the result isn't 10 (as I guess it should be because c=10). So your solution doesn't seem correct.
Last edited by nuzzle; January 13th, 2013 at 01:28 AM.

Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts
•

Click Here to Expand Forum to Full Width

On-Demand Webinars (sponsored)