#include <iostream.h>
#include <iomanip.h>
#include <math.h>

//unterprogrammdeklaration VOR main()!
// 1. Angabe dass UP verwendet werden
// 2. Anlegen von Speicherzellen zur Datenübergabe
// Syntax: Rückgabe-typ up-name (Empfangs-typen)
// im Beispiel wird eine floatzelle für die Rückgabe und eine Float- und eine Intzelle für den Empfang verwendet/angelegt
float berechne_umfang(float, int); //() notwendig für datenübergabe an das unterprogramm
float berechne_flaeche(float, int); 


int main()
{
    int /*Typdeklaration*/r=4  /*Typdefinition*/;
    float u, f, pi = 3.14259; //typ deklaration und definition in einem
    
    //aufruf von unterprogrammen zur berechnung von a und u
    //syntax: unterprogrammname(wert1, wert2, ...) Übergabe von Werten von Main an UP 
    u = berechne_umfang(pi, r); //umfang wird nach u eingespeichert
    f = berechne_flaeche(pi, r);
    cout << "u = " << u << endl;
    cout << "f = " << berechne_flaeche(pi, r) << endl; //man kann auch direkt unterprogramm-übergaben anzeigen lassen
    
cout << "\nProgrammende...";
cin.get (); cin.get();
return(0);    
    }
//Definition der Unterprogramme (gibt an, was zu machen ist)

    float berechne_umfang(float pii, int rr)
    {
      float umfang;
      umfang = 2 * pii * rr;
      return(umfang);
       }
      // diese berechnung kann man vereinfachen...
       
    float berechne_flaeche(float piii, int rrr)
    
    {
      return(piii * rrr * rrr); 
       }

/*
Hier: UP- Deklaration und Definition sind getrennt
*/
