## urgent help with c++ program for series

i wanna form program 2 sum this
pie=4[1-1/3 +1/5 -1/7+..... 1/n]

{
int n,z,i;
float x,y,pie;
cin>>n;
i=0;
while (i<=n)
{
y=1/((2*i)+1);
i=i+2;
}

for(z=1;z<=n;z=z+2)
{
x=1/((2*z)+1);

}

pie=4*(y-x);
cout<<pie;
}

cant understand wat to do...this is wat i did but its giving 0
 PhysOrg.com science news on PhysOrg.com >> King Richard III found in 'untidy lozenge-shaped grave'>> Google Drive sports new view and scan enhancements>> Researcher admits mistakes in stem cell study

 Quote by Isma y=1/((2*i)+1); x=1/((2*z)+1);
I don't know much about programming, but shouldn't the two lines above be:
Code:
 y = y + 1/((2*i)+1);
x = x + 1/((2*z)+1);
otherwise, you won't get the sum of the terms, and so y = x, and so you get pie to be 0.
 so will i initialize x nd y first?

## urgent help with c++ program for series

Yeah, initialize them to zero and make finchie's changes, and it should do what you describe.
 #include void main() { int n,z,i; float x,y,pie; cin>>n; i=0; y=0; while (i<=n) { y=y+1/((2*i)+1); i=i+2; } x=0; for(z=1;z<=n;z=z+2) { x=x+1/((2*z)+1); } pie=4*(y-x); cout<
 Recognitions: Staff Emeritus 1) You can write the program using 1 for loop. You don't need to separate the task of getting the negative part and the positive parts of the series. 2) You have typecasting issues. While doing your calculations you need to promote your ints to floats. This is pretty much as tight as you can get it: Code: #include using namespace std ; int main( void ) { int n; double pi=0 ; cin >> n ; for( int i=1, j=0 ; i
 Recognitions: Gold Member Science Advisor Staff Emeritus You are having problems with 'int' to 'float' conversions. These lines are the problem: y=y+1/((2*i)+1); x=x+1/((2*z)+1); y is a float, but i and z are integers. Because they are integers, the whole section 1/((2*i)+1) is treated like an integer, and equal to 0 for any value of i larger than 0. There are a few ways to get around this. Either create a dummy float 'foo' and then do foo = i; y=y+1/((2*foo)+1); or more cleanly look up what the static_cast command does and change the lines to y=y+(1/((2*static_cast(i))+1)); EDIT: looks like dduardo beat me to it.
 thanks a lot...i do get it now nd i ll try to form less loops now thanx a lot for the tip EDIT: plz can u tell wat this statement means j%2 ? pi-=1.0/i : pi+=1.0/i ; nd y are we doing it?
 Recognitions: Staff Emeritus j%2 ? pi-=1.0/i : pi+=1.0/i ; is just a shorthand for: Code: if(j%2){ pi-=1.0/i ; } else { pi+=1.0/i ; } The % operator is called the modulus operator. It gives you the remainder. In this case j%2 gives you the remainder of j divided by 2. If the reminder is 0, then you know the number is even, else it is odd. Also this: 1.0/i is identical to this: 1/(double)i This basically promotes the integer to double

 Quote by dduardo 1) You can write the program using 1 for loop. You don't need to separate the task of getting the negative part and the positive parts of the series. 2) You have typecasting issues. While doing your calculations you need to promote your ints to floats. This is pretty much as tight as you can get it: Code: #include using namespace std ; int main( void ) { int n; double pi=0 ; cin >> n ; for( int i=1, j=0 ; i
Hi i am new user of c++ language and i didnt get how this loop is working.

Recognitions:
Homework Help
 Quote by charu Hi i am new user of c++ language and i didnt get how this loop is working.
for( int i=1, j=0 ; i<n+1; i+=2, j+=1 ) {
The for statement is split into three parts with ";"
The first part is only executed once before the start of the loop, this creates variables i and j and sets them to 0.
The second part "i<n+1" is tested each time through the loop, the loop exits when this is false, so in this case when i is greater or equal to n
The third part is executed each time through the loop, it increments i and j for each iteration
 # include using namespace std; int main(){ int num; cout <<"enter the desired num"; cin >>num ; cout <<"*"<

Recognitions:
Homework Help
You mean to say you want to produce a series of integers which increments by 2,4,4 then after that it how does it increment? 2,4,4,6,6,6,8,8,8,8...?

 1*3* 1*3*
There is a repeated line here, is that intentional?

 Quote by Defennder You mean to say you want to produce a series of integers which increments by 2,4,4 then after that it how does it increment? 2,4,4,6,6,6,8,8,8,8...? There is a repeated line here, is that intentional?
no i want series should be produce in 2,4,4,4,4,4,4,4, increment...............
and result should be,,,,,,,,,,,1,3,7,11,15and so on,,,,,,,,,,,,,