Wie schreibe ich einen Logarithmus in C++?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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

Woher ich das weiß:Studium / Ausbildung – Studium und private Interessen

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

0
@4sure

Hast du jetzt hab ichs endlich kapiert ;)

0

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)

fang lieber einfacher an...

Ich habe schon einfachere Programme geschrieben wie zB Wachstum berechnen oder Schnittpunkte und Punkte ausrechnen und ich will die Programme ein wenig erweitern

0