#include <stdio.h>
#include <stdlib.h>


int ReadInt(int,int,char*);
int Menue(void);
int HornerSchema(int*,int, int);
void HornerFeldEinlesen(int*,int);
void Message(char*,int);
//------------------------------------------------------------------------------------------
// Hauptfunktion: Einstiegspunkt
int main()
{
    while(Menue());
    return 0;
}
//------------------------------------------------------------------------------------------
int Menue()
{
    int Wahl=0;
    printf("\n\n\tAbschlusspruefung Informatik");
    printf("\n\n\tHorner Schema..............1");
    printf("\n\n\tFibonacci..................2");
    Wahl=ReadInt(0,3,"\n\nBitte waehlen:");
    switch(Wahl)
    {
    case 1:
        {
          int feld[1000]; /* das sollte reichen */
          int n = ReadInt(0,6,"\n\n\tPolynomgrad:");
          int wert = ReadInt(-10,10,"\n\n\tX-Wert:");
            printf("\n\n %s","\tHornerschema");
          HornerFeldEinlesen(feld,n);
          printf("\n\n\tX-Wert %i",HornerSchema(feld, n, wert));
            break;
        }
    case 2:
        {
        }

    }
    Message("\n\n\tWeiter mit beliebiger Taste....",1);
    return (Wahl);
}
//-------------------------------------------------------------------------------------------
int HornerSchema(int*HornerFeld, int N,int Wert)
{
  int i;
  int r = 0;

  for(i=N-1; i >= 0; i--)
  {
    r = r * Wert + HornerFeld[i];
  }
  return r;
}
//-------------------------------------------------------------------------------------------
void HornerFeldEinlesen(int*HornerFeld, int n)
{
    printf("\n\n\n");
    while(n--)
    {
      printf("\n%d.Wert: ",n+1);
      scanf("%d",&HornerFeld[n]);
    }
}
//-------------------------------------------------------------------------------------------
void Message(char*Text,int Stop)
{
    while(getchar()!='\n');
    if(Text)
        printf(Text);
    if(Stop==1)
        getchar();
}
//-------------------------------------------------------------------------------------------
int ReadInt(int UG,int OG,char *Text)
{
    int IZahl;
    do
    {
        printf("\n %s( %d...%d) ",Text,UG,OG);
        scanf("%d",&IZahl);
            if ((IZahl<UG)||(IZahl>OG))
                printf("\a\n");
    }
    while((IZahl<UG)||(IZahl>OG));
return (IZahl);
}
