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:
//--------------------------------------------------------------------------- #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)); } //---------------------------------------------------------------------------
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>