Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   Infinite Loop (http://www.go4expert.com/forums/infinite-loop-t19890/)

chemr2 26Oct2009 08:27

Infinite Loop
 
I have taken c++ but it has been about a year ago. I am taking mechanics of materials now and need to solve a bending moment problem. I am trying to get values of Sigma when a is between 0 and 20mm in 2mm increments. I have wrote a little bit of code and need to figure out if this would the correct approach? Also why is this loop infinite?
I do not have a copy of my text anymore so any help would be appreciated.

The equation I am solving for is Sigma = MC / I
Remember I need 16 values for Sigma when a is varying.

Code:

#include<iostream>
#include<cmath>
using namespace std;
 
int main()
{
 
    double n,M,C,I,Sigma,b,h,a,x,i;
 
    n = 2.66;
    C = .020;
    M = 1500;
 
    for(a=0;a<=.020;a+.002)
    {
 
          Sigma = (1500 * .020)/ ((1/12)*(.060)*pow(.040-2*a,3));
          cout<<Sigma<<endl;
    };
 
 
 
 
    system("pause");
    return 0;
 
}


xpi0t0s 26Oct2009 13:58

Re: Infinite Loop
 
The loop does not modify a. Look carefully at the 3rd clause in the for statement.

chemr2 26Oct2009 19:35

Re: Infinite Loop
 
Quote:

Originally Posted by xpi0t0s (Post 59379)
The loop does not modify a. Look carefully at the 3rd clause in the for statement.

So a+.002 should be what I have listed below in red? If this is the case. I am still getting garbage answers.

Code:


#include<iostream>
#include<cmath>
using namespace std;
 
int main()
{
 
    double n,M,C,I,Sigma,b,h,a,x,i;
 
    n = 2.66;
    C = .020;
    M = 1500;
 
    for(a=0;a<=.020;a+=.002)
    {
 
          Sigma = (1500 * .020)/ ((1/12)*(.060)*pow(.040-2*a,3));
          cout<<Sigma<<endl;
    };
 
 
 
 
    system("pause");
    return 0;
 
}


xpi0t0s 26Oct2009 19:41

Re: Infinite Loop
 
What answers do you get and what answers do you expect?
Do you get different answers if you add ".0" to the end of each integer in the expression?
Code:

Sigma = (1500.0 * .020)/ ((1.0/12.0)*(.060)*pow(.040-2.0*a,3.0));

SaswatPadhi 27Oct2009 20:26

Re: Infinite Loop
 
Probably, he was getting all values as "Infinity".

@chemr2 :
The problem is because of the 1/12 in the denominator.

Both 1 and 12 are integers. Change at least one of them to float to get proper results.
This should be sufficient :
Code: CPP

Sigma = (1500.0 * .020)/ ((1.0/12)*(.060)*pow(.040-2.0*a,3));


BTW, this is NOT what we call an infinite loop.
Your loop is finite, but the output values are infinite ;)


All times are GMT +5.5. The time now is 13:08.