Berechnen Sie den Exponenten, ohne die Funktion pow() in C++ zu verwenden

Shikha Chaudhary 12 Oktober 2023
  1. Berechnen Sie den Exponenten, ohne die Funktion pow() in C++ zu verwenden
  2. Verwenden Sie die for-Schleife, um den Exponenten zu berechnen, ohne die pow()-Funktion in C++ zu verwenden
  3. Verwenden Sie die while-Schleife, um den Exponenten zu berechnen, ohne die pow()-Funktion in C++ zu verwenden
  4. Verwenden Sie die Rekursion, um den Exponenten zu berechnen, ohne die Funktion pow() in C++ zu verwenden
  5. Abschluss
Berechnen Sie den Exponenten, ohne die Funktion pow() in C++ zu verwenden

C++ kommt wie viele andere Programmiersprachen mit einer eingebauten Bibliothek, die Funktionen und Module enthält, um Aufgaben zu erleichtern. Die Funktion pow() ist eine eingebaute Funktion, mit der wir ganz einfach die Potenz einer Zahl berechnen können.

Es kann jedoch Situationen geben, wie auf Codierungsplattformen, in denen Sie die Kraft einer Zahl finden müssen, ohne irgendwelche eingebauten Funktionen zu verwenden. Irgendwelche Vermutungen, wie du das machen wirst?

In diesem Artikel werden wir die verschiedenen Möglichkeiten diskutieren, wie wir den Exponenten einer Zahl berechnen können, ohne die Funktion pow() zu verwenden.

Berechnen Sie den Exponenten, ohne die Funktion pow() in C++ zu verwenden

Bevor wir zu den Alternativen zur Verwendung der Funktion pow() übergehen, wollen wir zunächst sehen, wie die Funktion pow() in C++ funktioniert.

die pow()-Funktion in C++

Wie der Name schon sagt, berechnet die Funktion pow() oder power die Potenz einer Zahl. Diese Funktion nimmt zwei Werte als Argumente und erfordert auch die Verwendung der Header-Datei.

Der erste Wert, den wir in der Funktion pow() übergeben, fungiert als Basis, und der zweite Wert ist der Exponent, um den die Basis erhöht werden muss. Hier ist ein Programm, das den Wert von 5^3 mit Hilfe der Funktion pow() berechnet.

#include <math.h>
#include <stdio.h>

#include <iostream>

using namespace std;
int main() {
  double b = 5.0, p = 3.0, ans;
  ans = pow(b, p);

  cout << ans;

  return 0;
}

Ausgang:

125

Beachten Sie, dass die Funktion pow() double-Werte und nicht int als Argumente akzeptiert. Dies bedeutet jedoch nicht, dass die Funktion pow() nicht mit ganzen Zahlen verwendet werden kann.

Manchmal kann die Verwendung von int mit der Funktion pow() in einigen Compilern jedoch zu absurden Ausgaben führen. Zum Beispiel könnte pow(4,2) bei einigen Compilern die Ausgabe als 15 liefern.

Daher ist es ratsam, die Funktion pow() mit double-Datentypen zu verwenden.

Nachdem Sie nun die Grundlagen der Funktion pow() kennen, lassen Sie uns einige andere Möglichkeiten zur Berechnung des Exponenten einer Zahl diskutieren, ohne die Funktion pow() in C++ zu verwenden.

Verwenden Sie die for-Schleife, um den Exponenten zu berechnen, ohne die pow()-Funktion in C++ zu verwenden

Wir wissen, dass wir bei der Berechnung des Exponenten einer Zahl wiederholt multiplizieren. Wie oft diese Multiplikation wiederholt wird, hängt von dem Exponenten oder der Potenz ab, mit der die Basis erhoben wird.

Hier ist ein Beispiel dafür.

5^4 = 5 * 5 * 5 * 5 = 625

Wir können dieses Konzept auch beim Programmieren mit der for-Schleife anwenden. Hier ist der Code für dasselbe.

#include <math.h>
#include <stdio.h>

#include <iostream>

using namespace std;
int main() {
  int i, e, b, ans = 1;

  cout << "Enter the base: " << endl;
  cin >> b;

  cout << "Enter the exponent: " << endl;
  cin >> e;

  /*logic to calculate power*/

  for (i = 1; i <= e; ++i) {
    ans = ans * b;
  }

  cout << "The solution is: " << ans;

  return 0;
}

Ausgang:

Enter the base:
5
Enter the exponent:
4
The solution is: 625

Was passiert also in diesem Code?

Die Variablen b und e beziehen sich auf die Basis bzw. den Exponenten. Zusätzlich enthält die Variable ans den Wert 1 und die Variable i definiert die Anzahl der Durchläufe der for-Schleife.

Verstehen Sie jetzt, dass die Logik, die hier mit der Funktion pow() funktioniert, vom for-Block in diesem Code ausgeht. Lassen Sie uns also aufschlüsseln, was innerhalb des for-Blocks passiert.

Sie können sehen, dass i auf 1 initialisiert ist und auf den Wert des Exponenten ansteigt, der hier 4 ist. Außerdem multipliziert die Anweisung innerhalb der Schleife b mit ans und speichert das Ergebnis in der Variablen ans selbst.

Hier ist, was die Variable ans bei jeder Iteration enthält.

i=1
ans = 1*5
ans = 5

i=2
ans = 5*5
ans = 25

i=3
ans = 25*5
ans = 125

i=4
ans = 125*5
ans = 625

Und natürlich wird der Endwert der Variable ans als Ausgabe zurückgegeben, wenn die Schleife endet. Auf diese Weise kann die for-Schleife verwendet werden, um den Exponenten einer Zahl ohne die pow()-Funktion zu berechnen.

Lassen Sie uns nun eine while-Schleife verwenden, um dasselbe auszuführen.

Verwenden Sie die while-Schleife, um den Exponenten zu berechnen, ohne die pow()-Funktion in C++ zu verwenden

Die Grundidee hinter der Verwendung der while-Schleife zur Berechnung des Exponenten einer Zahl bleibt dieselbe wie die der for-Schleife. Das einzige, was sich ändert, ist die Art und Weise, wie die Anzahl der Wiederholungen gezählt wird.

Sehen Sie sich den unten angegebenen Code an.

Hier im while-Block ist der Anfangswert von e das, was der Benutzer als Exponent eingibt, und mit jedem Schritt verringert sich der Wert um eins. Am Ende endet die Schleife, wenn e auf 0 reduziert wird.

#include <math.h>
#include <stdio.h>

#include <iostream>

using namespace std;
int main() {
  int i, e, b, ans = 1;

  cout << "Enter the base: " << endl;
  cin >> b;

  cout << "Enter the exponent: " << endl;
  cin >> e;

  /*logic to calculate power*/

  while (e != 0) {
    ans = ans * b;
    --e;
  }

  cout << "The solution is: " << ans;

  return 0;
}

Ausgang:

Enter the base:
5
Enter the exponent:
4
The solution is: 625

Sie sehen, dass die Anweisung innerhalb der while-Schleife b mit ans multipliziert und das Ergebnis in der Variablen ans selbst speichert, so wie es im Fall der for-Schleife gemacht wurde.

Hier ist, was die Variable ans bei jeder Iteration enthält.

e = 4
ans = 1 * 5
ans = 5

e = 3
ans = 5 * 5
ans = 25

e = 2
ans = 25 * 5
ans = 125

e = 1
ans = 125 * 5
ans = 625

So können Sie also die while-Schleife verwenden, um den Exponenten einer Zahl zu berechnen, ohne die pow()-Funktion zu verwenden.

Wenn Sie weitere Operationen am Ausgang durchführen möchten, können Sie dies wie im folgenden Beispiel gezeigt tun.

#include <math.h>
#include <stdio.h>

#include <iostream>

using namespace std;
int main() {
  int i, e, b, ans = 1;

  cout << "Enter the base: " << endl;
  cin >> b;

  cout << "Enter the exponent: " << endl;
  cin >> e;

  /*logic to calculate power*/

  while (e != 0) {
    ans = ans * b;
    --e;
  }

  /*adding 500 to the result*/

  ans = ans + 500;
  cout << "The solution after addition is: " << ans;

  return 0;
}

Ausgang:

Enter the base:
5
Enter the exponent:
4
The solution after addition is: 1125

Beachten Sie, dass es ratsam ist, diese Methoden zur Berechnung des Exponenten zu verwenden, wenn Basis und Exponent ints sind. Verwenden Sie für float-Werte die Funktion pow().

Die Komplexität dieser beiden Methoden ist O(n), wobei n der Exponent ist.

Bisher haben wir die üblichen Schleifenmethoden besprochen, um die Potenz einer Zahl zu finden. Lassen Sie uns nun eine sehr interessante rekursive Lösung diskutieren, um dasselbe zu tun.

Verwenden Sie die Rekursion, um den Exponenten zu berechnen, ohne die Funktion pow() in C++ zu verwenden

Sehen Sie sich den unten angegebenen Code an.

#include <math.h>
#include <stdio.h>

#include <iostream>

using namespace std;

int product(int a, int b) {
  if (b)
    return (a + product(a, b - 1));
  else
    return 0;
}

int calculate_power(int x, int y) {
  if (y)
    return product(x, calculate_power(x, y - 1));
  else
    return 1;
}

int main() {
  cout << calculate_power(5, 2);
  getchar();
  return 0;
}

Ausgang:

25

Dieser Code verwendet zwei Funktionen, product für wiederholte Multiplikation und calculate_power, um x^y herauszufinden.

Wenn der main-Block läuft, geht die Steuerung zuerst zur calculate_power-Funktion. Wenn innerhalb dieser Funktion der Wert des Exponenten y 0 ist, geht die Steuerung zum if-Block und die Funktion gibt 1 zurück.

Andernfalls geht die Steuerung zum if-Block, wo die Funktion die product-Funktion aufruft, die rekursiv die calculate_power-Funktion aufruft. Auch innerhalb der product-Funktion, wenn die Steuerung zum if-Block geht, wird die product-Funktion erneut rekursiv aufgerufen.

Hier ist eine Illustration, die Ihnen hilft, die Funktionsweise dieses Codes besser zu verstehen.

Coming down:                       calculate_pow(5,2)
                            product(5, calculate_pow(5,1))
                                           product(5, calculate_pow(5, 0)
                                                           return 1


Going back, Step 1:                 product(5, 1)
                                return 5 + product(5, 0)
                                              return 0
                                            return 5+0 = 5


Going back, Step 2:                 product(5, 5)
                                         5 + product(5, 4)
                                                5 + 5 + product(5, 3)
                                                       5 + 5 + 5 + product(5, 2)
                                                            5 + 5 + 5 + 5 + product(5, 1)
                                                                      5 + 5 + 5 + 5 + 5
                                                                              25

So berechnet die Rekursion die Potenz einer Zahl, wobei die Zeitkomplexität O(n) ist, wobei n der Exponent ist.

Abschluss

In diesem Artikel haben wir besprochen, wie wir den Exponenten einer Zahl berechnen können, ohne die Funktion pow() in C++ zu verwenden. Wir haben dazu for- und while-Schleifen verwendet und auch gesehen, wie wir weitere Berechnungen durchführen können, sobald wir die Potenz einer Zahl haben.

Interessanterweise haben wir eine rekursive Lösung zur Berechnung der Potenz einer Zahl besprochen und auch die Funktionsweise dieses Codes mit einem detaillierten Flussdiagramm gesehen.

Verwandter Artikel - C++ Math