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 <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.

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

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