/*************************************************************\
This example seems to be well orgainzed, but it is still not
readable, all of the lines are aligned to the left, it is very
hard to see where is a start or end of a loop or a function
\*************************************************************/
#include <stdio.h>

double pn, p, answer;
int count1, count2;
double f(double);
double f1(double);
double a;
double b;
double xn, temp;
double left, lefty;
double right, righty;

void main(){
a=0;
b=0;
printf ("\nPoint a = ");
scanf("%lf", &a) ;
printf ("\nPoint b = ");
scanf("%lf", &b) ;
printf ("\n");
left=a;
right=b;
pn=(left+right)/2;
answer=f(pn);

while ((answer<-0.1)||(answer>0.1)){
lefty=f(left);
righty=f(right);

if ((lefty >0 && answer >0)||(lefty<0 && answer < 0)){
left=pn;
}
else if ((righty >0 && answer >0)||(righty<0 && answer < 0)){
right=pn;
}

pn=(left+right)/2;
answer=f(pn);
count1++;
}

xn=pn;
answer=f(xn);

while ((answer<-0.000001)||(answer>0.000001)){
temp=xn-(f(xn)/f1(xn));
xn=temp;
answer=f(xn);
count2++;
}

printf ( " N = %.8d pn = %.8f\n" , count1, pn);
printf ( " K = %.8d xk = %.8f\n\n" , count2, xn);
}

double f(double lnn){
double answer;
answer=exp(10*(1-lnn));
return answer;
}

double f1(double lnn){
double answer;
answer=-10*2.718281828*(10*(1-lnn));
return answer;
}