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.
Kopiere den Programmcode und teste das Programm.
#include <iostream> #include <conio.h> 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 ... "<<zahl<<": "; if (zahl>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.
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.
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.
Schreibe ein Unterprogramm, welches auf zwei Nachkommastellen rundet.
(Ein/Ausgabeparameter: zahl→double)