2009-11-15 5 views
0
double sqrtIt(double x, double low_guess, double high_guess) { 
    int n = 10; 
    int num = 0; 
    while (n > 0.000000000000001){ 
     n = n/10; 
     while (num < x && low_guess <= (low_guess * 10)){ 
      low_guess = low_guess + n; 
      num = low_guess * low_guess; 
      } 
    } 
    return low_guess; 
} 

Я попытался использовать приведенный выше код, чтобы найти квадратный корень из числа. функция отлично работает в большинстве случаев, но когда число равно 2, я получаю «. Исходный код недоступен для текущего местоположения. Показать разборку» ошибка из строки num = low_guess * low_guess; Я не знаю, что случилось, и что демонстрирует разборку? Спасибонайти squareroot с петлей

+4

«Показать разборку» довольно самоописательно. Он показывает вам разборку кода (поскольку по какой-то причине отладчик не может показать источник). Это указывает на то, что либо авария в коде библиотеки (или код, который иначе не принадлежит вам), либо что ваши символы настроены неправильно. В вашем случае, я бы предположил, что это вариант № 1 –

ответ

2

Сообщение «Нет исходного кода» может указывать на то, что вы не компилируете в режиме отладки, поэтому ваша среда IDE не может выполнять отладку на уровне исходного кода. Я думаю, что здесь, вероятно, есть какая-то путаница, вызванная попыткой разобраться с IDE в первый раз ...

Как уже говорили, вы должны, вероятно, объявить n и num двойными, а не int.

Возможно, как только вы познакомитесь со своей средой разработки (а также с языком), некоторые из этих вещей будут сортироваться самостоятельно.

1

есть ли опечатка в вашем коде?
low_guess < = (low_guess * 10) всегда справедливо для не отрицательного числа ...

2

Есть некоторые проблемы с этой функцией, но это, кажется, очень странная ошибкой, чтобы получить от этого кода. Я думаю, что вы сделали другую ошибку где-то еще в своей программе, и эта ошибка вызывает эту проблему.

0

Даже если бы это сработало, это было бы довольно неэффективно. Я думаю, вы хотели написать что-то вроде этого

double sqrtIt(double x) 
{ 
    double guess1, guess2; 
    guess1=1.0; 
    do 
    { 
    guess2=x/guess1; 
    guess1=(guess1+guess2)/2; 
    } 
    while (abs(guess1,guess2)<0.0000001); 
    return guess1; 
} 
Смежные вопросы