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);
 
void main()
{
  int zahl, summe;
  cout <<"Dieses Programm summiert alle Zahlen von 1 bis n";
  cout <<"\n Zahl n: ";
  cin >> zahl;
  if (zahl>0) {
	berechnung(zahl, summe);
	cout<<"\n Summe: 1... "<<zahl<<": " <<summe;
  }
  else{cout<<"Es wurde ein falscher Wert eingegeben";}
  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

Schreibe ein Programm, 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.

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 <<eingabe<<" Sekunden sind "<<stunden<<" Stunden, "<<minuten<<" Minuten und "<<sekunden<<" Sekunden!";
 
 
  getch();
  return 0;
}
 
void umwandeln(long ein, int &stun, int &min, int &sek)
{
	stun=ein/3600;
	ein=ein%3600;
	min=ein/60;
	sek=ein%60;
}