#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>


const char error1[] = "Wert ist größer als 100\n";
const char error2[] = "Wert ist größer als 200\n";
const char error3[] = "Wert ist negativ (<0)!!\n";
const char noerror[]= "Alles OK\n";

static void fehler(int kennung, const char *format, ...)
{
 va_list vargzeiger;
  va_start(vargzeiger,format);

 switch(kennung)
  {
   case 0 : printf("\nAchtung : ");
               vprintf(format,vargzeiger);
               break;
   case 1 : printf("\nFehler : ");
               vprintf(format,vargzeiger);
               break;
   case 2 : printf("\nProgrammabbruch : ");
               vprintf(format,vargzeiger);
               exit(1);break;
   case 3 : vprintf(format,vargzeiger);
               break;
  default : printf("\nFalscher Funktionsaufruf\n");
               break;
  }
 va_end(vargzeiger);
}

int main()
{
 int gesamt=0,neuezahl,x;
 char plusminus;
 printf("Zahl eingeben : ");
 scanf("%d",&gesamt); fflush(stdin);

 while(1)
  {
   fflush(stdin);
   x=1;
   printf("Diese Zahl '+' oder '-' Rechnen :\n");
   printf("(Oder '=' um d. Programm zu beenden und das Ergebnis auzugeben!)\n");
   printf("Eingabe > ");
   scanf("%c",&plusminus);
   switch(plusminus)
    {
     case '+' : printf("Zahl zum addieren eingeben : ");
                scanf("%d",&neuezahl); fflush(stdin);
                gesamt+=neuezahl;
                break;
     case '-' : printf("Zahl zum subbtrahieren eingeben : ");
                scanf("%d",&neuezahl); fflush(stdin);
                gesamt-=neuezahl;
                break;
     case '=' : printf("Das Gesamtergebnis beträgt %d\n",gesamt);
                fehler(2,"Saubere Beendigung\n");
                break;
     default  : fehler(1,"Eingabe: '+', '-' oder '=' für Ende\n");
                x=0;
                break;
    }

   if(x)
    {
     if(gesamt>100 && gesamt<200)
         fehler(0,error1);
     else if(gesamt>200)
         fehler(1,error2);
     else if(gesamt<0)
         fehler(2,error3);
     else
         fehler(3,noerror);
     }
  }
 return 0;
}