Подозирам че ше бъда освиркан но въпреки това
GeSHi (C++):
#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;
int main(int argc, char *argv[])
{
double number,igues,err,tmp,prec,;
long int counter,i;
counter=0;
err=1;
prec=1/1000;
cout<<"Number:";
cin>>number;
cout<<"Initial gues:";
cin>>igues;
while ((counter<=10)or(err>=prec))
{
tmp = igues/2 + number/igues/2;
err = fabs((tmp*tmp - number));
igues = tmp;
counter++;
cout<<counter<<" iteration:"<<igues<<" err: "<<err<<"\n";
};
system("PAUSE");
return EXIT_SUCCESS;
}
В този вариант while циккъла се получава безкраен. замяната на
GeSHi (C++):
prec=1/1000;
с
GeSHi (C++):
prec=1.0/1000;
води до сработване на проверката с брояча, но не и тази за прецизност на резултата.
Number:100
Initial gues:2
1 iteration:26 err: 576
2 iteration:14.9231 err: 122.698
3 iteration:10.8121 err: 16.9005
4 iteration:10.0305 err: 0.610834
5 iteration:10 err: 0.000927132
6 iteration:10 err: 2.14893e-009
7 iteration:10 err: 0
8 iteration:10 err: 0
9 iteration:10 err: 0
10 iteration:10 err: 0
11 iteration:10 err: 0
Press any key to continue . . .
това е изхода от програмат за за 100 и начално приближение 2. Използвам dev c++ което май ползва windows порт на gcc 3.4.2.