사용자에게 숫자 (대개 큰 숫자)를 묻는 프로그램이있어서 변수 "mu"에 저장합니다. 그런 다음 사용자에게 4 개의 중요한 값을 입력하도록 요청합니다. Im의 생성을 시도하는 공식은 4 개의 중요한 값을 취하여 w, x, y 및 z로 설정합니다. 내가 가지고있는 공식은 그런 것입니다. mu = w^a * x^b * y^c * z^d. 여기서 a, b, c, d는 {{-5, -4, -3, -2, -1, -1/2, -1/3, -1/4, 0, 1/4, 1/3, 1/2, 1, 2, 3, 4, 5}가된다. 프로그램의 요점은 선택된 각 지수가 mu에 가장 근접한 값을 얻을 때까지 각 가능한 값을 통과하는 것입니다. 예를 들어 사용자가 mu를 200,000으로 입력하고 w, x, y, z에 대한 입력 값이 45,180,402,110이면 그런 다음 프로그램 작업은 45^a * 180^b * 402^c * 110^d가 mu 또는 200,000에 가장 근접하도록 지수로 설정할 값을 추측하는 것입니다. 이제는 while 루프를 사용하여이 작업을하려고하지만 내 프로그램은 올바른 추측을 선택하지 않는 것 같습니다. (편집 및 비교 다른 오류를 추가하지만 난 올바른 생각 해달라고) 여기 스퀘어 루트 추측 공식에서 잘못된 값 얻기
지금까지 내 코드입니다 : 어떤 하나에 어떤 통찰력을 가지고double[] Guess = { -5, -4, -3, -2, -1, -1.0/2, -1/3, -1.0/4.0, 0,
1.0/4.0, 1.0/3.0, 1.0/2.0, 1, 2, 3, 4, 5 };
int a = 0;
int b = 0;
int c = 0;
int d = 0;
double er = 0.0;
out.print("Enter a value for mu:");
double mu = in.nextDouble();
double er1 = Math.abs((mu-mu)/mu);
out.print("Enter your first favorite positive value:");
double w = in.nextDouble();
out.print("Enter your second favorite positive value:");
double x = in.nextDouble();
out.print("Enter your third favorite positive value:");
double y = in.nextDouble();
out.print("Enter your fourth favorite positive value:");
double z = in.nextDouble();
while (a < Guess.length) {
double W = Math.pow(w, Guess[a]);
while (b < Guess.length) {
double X = Math.pow(x, Guess[b]);
while (c < Guess.length) {
double Y = Math.pow(y, Guess[c]);
while (d < Guess.length) {
double Z = Math.pow(z, Guess[d]);
er = ((W * X * Y * Z) - mu)/mu; //calculates percent error
if (er < 0)
{
er = er1 * -1;
}
if (er < er1){
er1 = er;
}
d++;
}
d = 0;
c++;
}
c = 0;
b++;
}
b = 0;
a++;
}
out.print("error = " + er);
내가 뭘 잘못하고있을 수도 있고 내가 뭘 할 수있다 추가해야합니까? 도와 주셔서 감사합니다! 내 while 루프가 정확한 숫자를 알려줄 것이라는 것을 알고 있지만, 내 a, b, c, d 또는 내 백분율 오차를 corretly 설정하지 않는다고 생각합니다.
EDIT = 점점 더 큰 오류 값입니다. . 엄청난 가치.
1) while 루프가 아닌 for 루프를 사용하면 코드를 정리할 수 있습니다. 2) 오류를 저장하고 가장 작은 값을 가진 대답을 찾을 필요가 있습니다 ... –
나는 * for *를 for 루프로 다시 쓰고 싶을 수도 있습니다. 당신의 논리가 이렇게 분명해질 것입니다. –
for 루프를 사용하면 예를 쉽게 만들 수 있지만, im은 damn while 루프를 사용하여 다시 작성하도록 요청합니다. 나는 여기서 나의 실수를 발견 할 수 없다. – WestonBuckeye