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

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));`

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 01:59.