Hello,

This program that is supposed to find pi, and it should approximate pi to some number of terms. This number is an input from user. However, for some reason, when I run it and enter 10 as my input, it doesn't do anything. No error, no return. Here is a screenshot of what I am stuck at.

Code:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
long double approx1 (int terms);
long double approx2 (int terms);
int main ()
{
long double pi, first, second;
int terms;
char ch;
printf ("\nEnter the number of terms to approximate pi, or 0 to terminate: ");
scanf ("%d", &terms);
while (terms != 0)
{
if (terms == 1)
{
pi = 4;
printf ("\nFirst approximation of pi to 1 term is %.8Lf\n\n", pi);
pi = sqrt(12);
printf ("Second approximation of pi to 1 term is %.8Lf\n\n", pi);
}
else if (terms > 1 )
{
first = approx1 (terms);
printf ("\nFirst approximation of pi to %d term is %.8Lf\n\n", terms, first);
second = approx2 (terms);
printf ("Second approximation of pi to %d term is %.8Lf\n\n", terms, second);
terms = 0;
}
else
{
printf ("\nWrong input, please try again\n\n");
}
printf ("Enter the number of terms to approximate pi, or 0 to terminate: ");
scanf ("%d", &terms);
}
printf ("\n\n***** Program Terminated *****\n");
return 0;
}
long double approx1 (int terms)
{
int i;
long double pi=0,denom=1.0,num=4.0;
for ( i =1; i = (terms+1); i++)
{
if ((i % 2) != 0)
{
pi = pi + (num / denom);
}
else
{
pi = pi - (num / denom);
}
denom = denom + 2.0;
}
return pi;
}
long double approx2 (int terms)
{
int i;
long double pi=0.0,denom = 1.0,num=12.0;
for ( i =1; i = (terms+1); i++)
{
if ((i % 2) != 0)
{
pi = pi + (num / denom);
}
else
{
pi = pi - (num / denom);
}
denom = (denom + 1.0)*(denom +1.0);
}
pi = sqrt(pi);
return pi;
}