Programmieren
 
 
 
 
 
C-Grundkurs

 
 
 
 
.. Beispiel: Logarithmus zu beliebiger Basis
 
 

 
 
 
 

 

Aufgabe:
Scheiben Sie ein C-Programm, das den Logarithmus einer Zahl ermittelt. Die Basis des Logarithmus soll beliebig vorgegeben werden können.
Ein- und Ausgabe sollen in dem Hauptprogramm erfolgen, die Berechnung des Logarithmus soll in einem Unterprogramm mit Namen 'logarithmus()' erfolgen.

Theorie:
Die mathematische Fragestellung 'Wie oft darf ich die Zahl mit dem Namen BASIS als Faktor setzen und multiplizieren, damit die angegebene Zahl mit dem Namen NUMERUS herauskommt?' wird normalerweise wie folgt aufgeschrieben ..
                           log BASIS NUMERUS oder loga b oder loga (b)

das Ergebnis der Berechnung nennt man den LOGARITHMUS. Einfache Logarithmen kann man im Kopf berechnen, z.B muß bei der Aufgabe .. log2 (16) = 4 herauskommen, denn 2*2*2*2 = 16. Die 2 wurde 4 mal als Faktor geschrieben.

Formel:
Leider gestatten Taschenrechner nur festgelegte Basen wie e oder 10 und keine beliebigen Basen. Jedoch hilft folgende Formel, um mit einem vorhandenen Logarithmus alle anderen zu berechnen. Sie lautet ...


dabei ist logc der bekannte Logartithmus des Rechengerätes. In C gibt es die Logarithmusfunktion log(), die mit der Basis e = 2,718.. arbeitet oder die Funktion log10(). Hier ist die Basis 10. Der Logarithmus log2 (16) kann in C also auf folgendem Weg ermittelt werden.

Probieren Sie diese Berechnung und andere zunächst auf ihrem Taschenrechner aus. Dann geben Sie die Werte in das C-Programm ein.


Als Zusatzaufgabe können Sie auch mal darüber nachdenken, unter welchen Bedingungen die Berechnung des Logarithmus nicht funktionieren kann. Beispiel: log2 (-16) ..

 

 

 

 




// logarith.cpp
// -----------  Version 20.05.2002
//              Model: small
//              Fliesskommaemulation ein (bei SC12)
//              D.Schwarzer, www.GoBlack.de

// Berechnung des Logarithmus eines Numerus zu einer
// beliebigen Basis


// Deklarationen von Bibliotheksfunktionen
#include <stdio.h>      // für printf()
#include <math.h>       // für log10()

// Deklarationen eigener Funktionen
double logarithmus (double, double);

// main()
// Einstiegsfuntion des lauffähigen Programms .exe vom
// Betriebssystem aus.
// main dient hier als Testprogramm für die Benutzer-
// Funktion logarithmus()

void main (void)
{
 double l, n, b ;            // Deklaration von Variablen
 b = 5;                      // Definition der Basis
 n = 234;                    // Definition des Numerus

                             // Aufruf der Funktion und 
 l = logarithmus ( b, n );   // Definition von l

 printf ("\r\n Der Logarithmus zur Basis %9.2f von "
         "%9.2f \r\n besitzt den Wert: = %9.5f",b, n, l);
}

// logarithmus()
// Definition der Funktion
// Berechnet den Logarithmus des Numerus zu einer beliebigen
// Basis
double logarithmus (double bas, double num)
{
 return (log10(num)/log10(bas));
}




 

 

 


Zur Funktion Logarithmus:


Deklaration:

double logarithmus (double Basis, double Numerus);

diese Deklaration beinhaltet neben den Angaben, die der Compiler unbedingt benötigt auch Angaben, die ein Benutzer der Funktion gebrauchen kann, nämlicht die Beschreibung der zu übergebenden Variablen. Kürzer könnte man schreiben ..

double logarithmus (double, double);


Übergabeparameter 1:

Basis des zu berechnenden Logarithmus


Übergabeparameter 2:

Numerus des zu berechnenden Logarithmus


Rückgabe:

Die Funktion gibt den Logarithmus eines Numerus zu einer beliebigen Basis zurück.





www..de