내 프로그램에서 겉으로보기에는 무한한 입력 루프에 대한 빠른 질문이있었습니다. while 회 돌이에서 일어난다는 것이 확실합니다. 내 수학 또는 코딩 때문인지 궁금해합니다. while 루프는 여전히 나에게 새로운 것이므로 어떤 도움이나 설명도 좋을 것입니다. 이 프로그램은 Newton의 방법을 사용하여 z의 p 번째 루트, 잔차 및 루프 간의 개선을 찾는 프로그램의 시작입니다. 또한 for 루프가 제 목적에 더 잘 될지 궁금합니다. 여기까지입니다 :While While 함수에서 입력 루프
#include <iostream>
#include <cmath>
using namespace std;
double Newton(double z, int p, double &x, double &n);
int main(){
double z, x, n, residual, bai, bri;
int p;
x = 1;
n = 1;
cin >> z >> p;
double roots = Newton(z, p, x, n);
cout.precision (5);
cout << "Input: z = " << z << ", p = " << p << endl << "Root = " << x << endl;
}
double Newton(double z, int p, double &x, double &n){
x = (x - ((pow (x, p) - z)/(p * (pow (x, (p - 1))))));
while (x != 0){
x = (x - ((pow (x, p) - z)/(p * (pow (x, (p - 1))))));
n++;
}
return x;
}
부동 소수점 숫자가 작동하는 방식 때문에 'x'가 '0'과 같은 가능성은 거의 없습니다. 대신 엡실론 값과 비교해보십시오. 'fabs (x)
syam