// Loesung der Aufgabe 4-4
// Fibonacci Zahlen
// Fi = Fi-1 + Fi-2
// Fi    ... i   te Zahl
// Fi-1 ... i-1 te Zahl (Vorgaenger)
// Fi-2  ... i-2 te Zahl (Vor-Vorgaenger)
// F1 = F2 = 1

#include <stdio.h>

int main()
{
  unsigned long  F[3];    // F[0] = Fi, F[1] = Fi-1, F[2] = Fi-2
  int i, n;

  printf("\n\nBerechnung der ersten n Fibonacci-Zahlen: n [ 2 - 46 ] = ");

  // ab n = 47 sind die Zahlen groesser als die groesste mit unsigned long
  // darstellbare Zahl

  scanf("%i%*c", &n);
  while (n < 2 || n > 46) {
    printf("Ganze Zahl zwischen 2 und 46 eingeben! n = ");
    scanf("%i%*c", &n);
  }

  F[2] = F[1] = 1;
  printf("\n%4i: %12lu\n", 1, F[2]);
  printf(  "%4i: %12lu\n", 2, F[1]);

  for (i = 3; i <= n; i++) {
    F[0] = F[1] + F[2];
    printf("%4i: %12lu\n", i, F[0]);
    // Vorbereitung auf Berechnung der naechsten Zahl Fi
    F[2] = F[1]; // Fi-2
    F[1] = F[0]; // Fi-1
  }

  getchar(); // warte auf eine Eingabe
  return 0;
}