Код
В този вариант while циккъла се получава безкраен. замяната на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; }
Код
сGeSHi (C++):
prec=1/1000;
Код
води до сработване на проверката с брояча, но не и тази за прецизност на резултата.GeSHi (C++):
prec=1.0/1000;
Цитат
Number:100това е изхода от програмат за за 100 и начално приближение 2. Използвам dev c++ което май ползва windows порт на gcc 3.4.2.
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 . . .