Wie schreibe ich einen Logarithmus in C++?
Hallo ich schreibe grad ein Programm in C++..
Da ich das noch nicht lange tue kenne ich noch nicht so viele Befehle.
Wie schreibe ich da einen Logarithmus von z.B.:
log 8 zur Basis 2 also 2hoch x gliech 8.
Würde mich über eure Hilfe freuen :)
3 Antworten
![](https://images.gutefrage.net/media/default/user/11_nmmslarge.png?v=1551279448000)
Guten Abend maxelelel,
hier ein kleines Beispielprogramm:
_#include <math.h> //die Unterstriche weglassen ;) nur wegen Darstellung hier nötig
_#include <iostream> //iostream zur Ausgabe, math für ln()
using namespace std; //bin schreibfaul:)
double logarithmus ( double Basis, double Wert ) /* * math.h liefert keine Funktion zu beliebigen Basen, dies muss durch das Logarithmusgesetz ermöglicht werden * */
{
double ergebnis = log(Wert)/log(Basis); //Logarithmusgesetz
return ergebnis; //Zurückgeben des Ergebnis
}
int main ( void ) //Test
{
double basis, wert, ergebnis;
cout<<"Basis?"<<endl;
cin>>basis;
cout<<"Wert?"<<endl;
cin>>wert;
ergebnis = logarithmus(basis, wert);
cout<<endl<<"Der Logarithmus von "<<wert<<" zur Basis "<<basis<<" ist: "<<ergebnis;
return 0;
}
Habs nicht ausprobiert, vllt ist ein tippfehler drin :) es geht ja um die Logik und du kannst es nun selbst versuchen.
Viel Spaß beim Programmieren,
Grüße 4sure
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
Für natürliche Logarithmen gibts in C++ log, für 10er-Logarithmen log10 (bei beiden muss cmath eingebunden werden). Für beliebige Basen musst du dir eine Funktion schreiben, da gelten dann Logarithmengesetze, also
log_a (b) = ln(b) / ln(a)
![](https://images.gutefrage.net/media/default/user/14_nmmslarge.png?v=1551279448000)
fang lieber einfacher an...
![](https://images.gutefrage.net/media/default/user/13_nmmslarge.png?v=1551279448000)
Ich habe schon einfachere Programme geschrieben wie zB Wachstum berechnen oder Schnittpunkte und Punkte ausrechnen und ich will die Programme ein wenig erweitern
![](https://images.gutefrage.net/media/default/user/14_nmmslarge.png?v=1551279448000)
Ups,
sehe gerade, das hat ceevee sowieso schon beantwortet... :)
auch wollte ich noch hinzufügen, dass man noch einige Feinheiten bezüglich des Definitionsbereichs der Basis beachten muss. Ich habe beim Coden leider noch vergessen, dass die Basis nicht negativ oder 0 sein darf (wenn man sich eine MENGE arbeit erspaaren will ;) ). Diese Fälle sollten noch unterschieden werden, dies sind aber lediglich Feinheiten. Ich hoffe ich habe trotzdem geholfen,
viele Grüße 4sure