#include <iostream>

using namespace std;
// Prototypen
template <class T>
T DatenErfassen(T *result, const char message[]);
float EinnahmenBerechnen(float *tagespreis, int *gewicht);

const char *fehler_meldung = "\nEs gab einen Fehler bei der Eingabe.\nBitte erneut eingeben.\n";
int main()
{
    cout << "Willkommen auf dem Bauerhof von Bauer Max\n";
    float tagespreis = 0, einnahmen = 0;
    int gewicht = 0;
    cout << "Bitte geben Sie den aktuellen Tagespreis und das Gewicht an.\n ";
    DatenErfassen(&tagespreis, "Tagespreis:");
    DatenErfassen(&gewicht, "Gewicht:");
    einnahmen = tagespreis * gewicht;
    cout << "Die heutigen Einnahmen belaufen sich auf: " << EinnahmenBerechnen(&tagespreis, &gewicht) << " € (" << tagespreis << " x " << gewicht << ")\n";
    return 0;
}

template <class T>
T DatenErfassen(T *result, const char message[])
{
    do
    {
        if (cin.fail())
        {
            cout << fehler_meldung;
            cin.clear();
            cin.ignore();
        }
        cout << message << "\t";
        cin >> *result;
    } while (cin.fail());
    return *result;
}

float EinnahmenBerechnen(float *tagespreis, int *gewicht)
{
    return (*tagespreis) * (*gewicht);
}