Unterprogramme und Funktionen

Das folgende Programm soll eine double-Zahl auf zwei Dezimalstellen runden.
Dabei werden die unterschiedlichen Arten von Unterprogrammen bzw. eine Funktion mit Rückgabewert vorgestellt. Jeder Button führt das Runden anders durch:

Projekt Runden

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "RundenUnit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void rundenohnepar()  //keine Variablenübergabe
{
double zahl;
zahl=StrToFloat(Form1->Edit1->Text);
zahl=zahl*100+0.5;
zahl=(int)zahl;
zahl=zahl/100.0;
Form1->Label1->Caption=FloatToStr(zahl);
}
 
void rundenmitpar(double z)   //Typ double muss übereinstimmen
{
z=z*100+0.5;
z=(int)z;
z=z/100.0;
Form1->Label2->Caption=FloatToStr(z);
}
 
void rundenmiteinauspar(double &z) //Ein-/Ausgabeparameter mit & vor Namen
{
z=z*100+0.5;
z=(int)z;
z=z/100.0;
}
 
double runden(double z)  //Funktion mit Rückgabewert
{
z=z*100+0.5;
z=(int)z;
z=z/100.0;
return z;   //Wert von z wird quasi der Funktion runden
			//zugewiesen
}
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
rundenohnepar();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
double zahl;
zahl=StrToFloat(Edit1->Text);
rundenmitpar(zahl);       //Aufruf der Funktion mit Eingabeparameter.
//hier hat zahl noch immer den Wert als vor Aufruf der Funktion!
ShowMessage(zahl);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
double zahl;
zahl=StrToFloat(Edit1->Text);
rundenmiteinauspar(zahl);  //Aufruf der Funktion mit Ein/Ausgabeparameter
//jetzt hat zahl einen anderen Wert als vor Aufruf der Funktion
Form1->Label3->Caption=FloatToStr(zahl);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
double zahl;
zahl=StrToFloat(Edit1->Text);
Label4->Caption=FloatToStr(runden(zahl));
}
//---------------------------------------------------------------------------

Vertiefung

Erweitere das Programm um ein weiteres Edit-Feld, in dem die Anzahl der Nachkommastellen eingegeben werden können.
Die Funktion double runden soll eine weitere Eingabevariable vom Typ integer erhalten, sodass auch die Anzahl der Nachkommastellen eingegeben werden können.
Hinweis: Verwende dazu die Funktion pow(z,n), welche die n-te Potenz der Zahl z ermittelt. Dafür muss die Bibliothek math.h eingefügt werden:

#include <math.h>

Lösung: