Вычислить 5 до степени 3, но возвращает 0. Почему? - PullRequest
4 голосов
/ 25 мая 2011
#include <iostream>

double power (double z, int n)
{
    double result(0.0);
    for (int i = 1; i <= n; i++)
        result *= z;
    return result;
}

int main()
{
    int index(3);
    double x(5.0), double y(0.0);
    y = power (x, index);
    std::cout << y << std::endl;
    return 0;
}

Здравствуйте, где ошибка в этом коде, пожалуйста?

Спасибо! * * 1004

Ответы [ 4 ]

12 голосов
/ 25 мая 2011

Поскольку result инициализируется как 0.И, как мы знаем, 0 * anything == 0.Вам нужно начать с 1.

[В будущем, пожалуйста, научитесь отлаживать!Вы бы легко заметили это, если бы пошагово прошли по коду в отладчике или добавили несколько printf операторов в свою функцию.]

1 голос
/ 25 мая 2011

В вашей силовой функции ваш result инициализируется как 0.0, затем, когда вы умножаете его на zn раз, вы просто умножаете 0 на z.

Вы должны изменить double result(1.0);.

1 голос
/ 25 мая 2011

Ошибка double result(0.0);.0, умноженное на что-либо, равно 0.

Должно быть double result(1.0);

0 голосов
/ 25 мая 2011

Ваш результат должен быть инициализирован как 1.0, а не как 0.0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...