====== Unterprogramme mit Ein- und Ausgabeparametern ======
Es gibt jedoch auch viele Probleme, bei denen die Ausführung des Unterprogramms Ergebnisse liefert, die später im Hauptprogramm verwendet werden müssen. Dazu dienen sogenannte **Ein/Ausgabeparameter**.
Diese Parameter werden mit einem **&**-Zeichen gekennzeichnet.
==== Beispiel ====
Kopiere den Programmcode und teste das Programm.
#include
#include
using namespace std;
void berechnung(int &n, int &sum);
int main()
{ int zahl, summe=0;
cout <<"Dieses Programm summiert alle Zahlen von 1 bis n";
cout <<"\n Zahl n: ";
cin >> zahl;
cout<<"\n Summe: 1 ... "<0) {
berechnung(zahl, summe);
cout << summe;
}
else{cout<<"Es wurde ein falscher Wert eingegeben";}
cout<<"\n\n Die Variable zahl hat nun den Wert: " << zahl;
getch();
} //Hauptprogramm
void berechnung(int &n, int &sum){
sum=0;
while(n>0){
sum=sum+n;
n--;
}
} //Berechnung
Beide Parameter sind Ein/Ausgabeparameter. ''n'' wird innerhalb von Berechnung verändert, weshalb auch der veränderte Wert zurückgegeben wird, als ''zahl''.
Ändere den Kopf von ''berechnung'', sodass ''n'' ein reiner Eingabeparameter ist und ''sum'' ein Ein/Ausgabeparameter.
==== Aufgabe 1 ====
Schreibe ein Programm (zeitumwandlung.cpp), welches Sekunden in Stunden, Minuten und Sekunden umwandelt.
Die Umwandlung soll mit Hilfe des Unterprogramms ''void umwandeln'' (Eingabeparameter: ein->long; Ein/Ausgabeparameter: h, m, s) realisiert werden.
++++ Lösung|
/*
void umwandeln(long ein, int &stun, int &min, int &sek);
int main()
{
long eingabe;
int stunden, minuten, sekunden;
cout << "Dieses Programm rechnet Sekunden in Stunden, Minuten und Sekunden um!\n";
cout << "Bitte geben Sie die Anzahl der Sekunden an: ";
cin >> eingabe;
umwandeln(eingabe, stunden, minuten, sekunden);
cout <
*/
++++
==== Aufgabe 2 ====
Schreibe ein Programm (winkelumwandlung.cpp), welches Dezimalgrad in Grad, Minuten und Sekunden umwandelt.\\
(Eingabeparameter: dezgrad->float; Ein/Ausgabeparameter: g, m, s ->int )
Testdaten: Die Eingabe von 30.2556 soll dann 30 Grad 15 Minunten 20 Sekunden liefern.
Hinweis: Du erhältst die Vor- bzw. Nachkommastellen einer Dezimalzahl, indem du ein Type-Casting durchführst.
Z.B. liefert ''grad = (int)dezgrad;'' die Vorkommastellen, ''help = dezimalgrad - grad''; dann die Nachkommastellen. Die Variable ''grad'' besitzt dabei den Typ ''int'', die Variable ''help'' den Typ ''float''.
==== Aufgabe 3 ====
Schreibe ein Unterprogramm, welches auf zwei Nachkommastellen rundet.\\
(Ein/Ausgabeparameter: zahl->double)
++++ Lösung|
void round(double &zahl)
{
zahl=(double)(int)(zahl*100+0.5)/100;
}
++++