// ueberl.cc
// Ueberlaedt die Bib-Fkt double pow(double,double)
// durch                  double pow(double,int)
// Zu uebersetzen mit: g++ ueberl.cc -o ueberl
using namespace std;
#include <iostream>
#include <math.h>

double pow(double f, int i) {           // zweites Argument jetzt int !!
  cout << " (Integer Exponent) : ";
  if (i == 0) return 1;
  if (i < 0) { i = -i; f = 1/f;  }
  if (i == 1) return f;
  double res = f; // Deklarationen muessen in C++ nicht am Blockanfang stehen
  while (i-- > 1)
    res *= f;
  return res;
}

int main() {
  double f = 1.234, e = 2.718;
  for (int i = 0; i < 4; i++) {         // int i hier: C++ -spezifisch !
    cout << f << " hoch " << i   << " = " << pow(f,i)           << '\n';
    cout << f << " hoch " << i   << " = " << pow(f,(double)i)   << '\n';
    cout << f << " hoch " << e+i << " = " << pow(f,e+i)         << '\n';
  }
}
