/***********************
|
|
* Ein einfacher Taschenrechner
|
|
*
|
|
* Rainer Hihn
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
|
|
void exit(int);
|
|
|
|
float calculate(char optr, float opr1, float opr2)
|
|
{
|
|
float rErg = 0;
|
|
|
|
switch(optr) {
|
|
/**
|
|
* addieren
|
|
*/
|
|
case '+':
|
|
rErg = opr1 + opr2;
|
|
break;
|
|
/**
|
|
* subtrahieren
|
|
*/
|
|
case '-':
|
|
rErg = opr1 - opr2;
|
|
break;
|
|
/**
|
|
* multiplizieren
|
|
*/
|
|
case '*':
|
|
rErg = opr1 * opr2;
|
|
break;
|
|
/**
|
|
* dividieren
|
|
*/
|
|
case '/':
|
|
rErg = opr1 / opr2;
|
|
break;
|
|
/**
|
|
* Wenn kein erlaubter
|
|
* Operator eingegeben wurde
|
|
*/
|
|
default:
|
|
printf("Falscher Operator: %c \n", optr);
|
|
exit(1);
|
|
}
|
|
|
|
return rErg;
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
/**
|
|
* Variablendeklaration
|
|
*/
|
|
char cOptr;
|
|
float fOpr1;
|
|
float fOpr2;
|
|
float fErg;
|
|
|
|
while(1)
|
|
{
|
|
printf("Eingabe: Operator <return> Operand1 <return> Operand2 <return> \n");
|
|
|
|
/**
|
|
* Benutzereingabe Operator
|
|
*/
|
|
printf("Bitte Eingabe Operator \n");
|
|
scanf(" %c", &cOptr);
|
|
|
|
/**
|
|
* Programm wird beendet wenn
|
|
* 'q' eingeben wird
|
|
*/
|
|
if(cOptr == 'q')
|
|
{
|
|
break;
|
|
}
|
|
|
|
/**
|
|
* Benutzereingabe Operand 1
|
|
*/
|
|
printf("Bitte Eingabe Operand1: \n");
|
|
scanf(" %f", &fOpr1);
|
|
/**
|
|
* Benutzereingabe Operand 2
|
|
*/
|
|
printf("Bitte Eingabe Operand2: \n");
|
|
scanf(" %f", &fOpr2);
|
|
|
|
if(cOptr == '/' && fOpr2 == 0)
|
|
{
|
|
printf("ehm ... nein? \n");
|
|
break;
|
|
}
|
|
|
|
/**
|
|
* Ergebnis berechnen und ausgeben
|
|
*/
|
|
fErg = calculate(cOptr, fOpr1, fOpr2);
|
|
printf("%f %c %f = %f \n\n", fOpr1, cOptr, fOpr2, fErg);
|
|
}
|
|
|
|
return 0;
|
|
}
|