There are a number of: It is necessary to write a program with a calculation with a given accuracy. The problem is that the loop does not end until the
result variable reaches total'a
The code itself:
#include <stdio.h> #include <stdlib.h> #include <math.h> double summ(int); double summ(int N) { int i; double res1=1, res2=0; for(i=1;i<=N;i+=2) { res1 = 1.0/i * res1; res2 += res1; } return res2; } double dell(int); double dell(int N) { double a=1.0; a=N/a+1; N-=1; while (N>=1) { a=N/a+1; N-=1; } a=1.0/a; return a; } int main() { double e = exp(1.0), p = acos(-1.0), result=0, accuracy,total; int N=1; printf("input accuracy = "); scanf("%f", &accuracy); total = sqrt((e * p)/2.0); do { result = summ(N) + dell(N); N+=1; } while (fabs(total - result) > accuracy); printf("total = %f\nresult = %f\niterations = %d",total, result, N); return 0; }
scanf("%f", &accuracy);- but%fis forfloat, not fordouble. Check what actually turns out to be equal toaccuracyafter typing ... - Harry