4 Stimmen

Berechnen Sie 5 hoch 3, aber es ergibt 0. Warum?

#include 

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;
}

Hallo, wo ist der Fehler in diesem Code, bitte?

Danke!

12voto

Oliver Charlesworth Punkte 259497

Weil result auf 0 initialisiert ist. Und wie wir wissen, 0 * anything == 0. Du musst bei 1 anfangen.

[In Zukunft lernen Sie bitte, wie man debuggt! Sie hätten dies leicht bemerkt, wenn Sie Ihren Code in einem Debugger durchlaufen lassen oder einige printf-Anweisungen zu Ihrer Funktion hinzugefügt hätten.]

1voto

Serge Dundich Punkte 3957

Fehler ist doppeltes Ergebnis(0.0);. 0 mal irgendetwas ist 0.

Muss sein doppeltes Ergebnis(1.0);

1voto

Vadiklk Punkte 3584

In Ihrer Potenzfunktion wird Ihr Resultat initialisiert mit 0.0, dann wenn Sie es mit z n mal multiplizieren, multiplizieren Sie einfach 0 mit z.

Sie sollten double result(1.0); ändern.

0voto

Manoj R Punkte 3127

Ihr Ergebnis sollte auf 1,0 initialisiert werden und nicht auf 0,0.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X