You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

107 lines
2.0 KiB

  1. /***********************
  2. * Ein einfacher Taschenrechner
  3. *
  4. * Rainer Hihn
  5. */
  6. #include <stdio.h>
  7. void exit(int);
  8. float calculate(char optr, float opr1, float opr2)
  9. {
  10. float rErg = 0;
  11. switch(optr) {
  12. /**
  13. * addieren
  14. */
  15. case '+':
  16. rErg = opr1 + opr2;
  17. break;
  18. /**
  19. * subtrahieren
  20. */
  21. case '-':
  22. rErg = opr1 - opr2;
  23. break;
  24. /**
  25. * multiplizieren
  26. */
  27. case '*':
  28. rErg = opr1 * opr2;
  29. break;
  30. /**
  31. * dividieren
  32. */
  33. case '/':
  34. rErg = opr1 / opr2;
  35. break;
  36. /**
  37. * Wenn kein erlaubter
  38. * Operator eingegeben wurde
  39. */
  40. default:
  41. printf("Falscher Operator: %c \n", optr);
  42. exit(1);
  43. }
  44. return rErg;
  45. }
  46. int main(void)
  47. {
  48. /**
  49. * Variablendeklaration
  50. */
  51. char cOptr;
  52. float fOpr1;
  53. float fOpr2;
  54. float fErg;
  55. while(1)
  56. {
  57. printf("Eingabe: Operator <return> Operand1 <return> Operand2 <return> \n");
  58. /**
  59. * Benutzereingabe Operator
  60. */
  61. printf("Bitte Eingabe Operator \n");
  62. scanf(" %c", &cOptr);
  63. /**
  64. * Programm wird beendet wenn
  65. * 'q' eingeben wird
  66. */
  67. if(cOptr == 'q')
  68. {
  69. break;
  70. }
  71. /**
  72. * Benutzereingabe Operand 1
  73. */
  74. printf("Bitte Eingabe Operand1: \n");
  75. scanf(" %f", &fOpr1);
  76. /**
  77. * Benutzereingabe Operand 2
  78. */
  79. printf("Bitte Eingabe Operand2: \n");
  80. scanf(" %f", &fOpr2);
  81. if(cOptr == '/' && fOpr2 == 0)
  82. {
  83. printf("ehm ... nein? \n");
  84. break;
  85. }
  86. /**
  87. * Ergebnis berechnen und ausgeben
  88. */
  89. fErg = calculate(cOptr, fOpr1, fOpr2);
  90. printf("%f %c %f = %f \n\n", fOpr1, cOptr, fOpr2, fErg);
  91. }
  92. return 0;
  93. }