works as described
This commit is contained in:
parent
b0edaf5c43
commit
90342cf89f
2 changed files with 89 additions and 0 deletions
BIN
pocket_calc
Normal file
BIN
pocket_calc
Normal file
Binary file not shown.
89
pocket_calc.c
Normal file
89
pocket_calc.c
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <float.h>
|
||||
#include <stdbool.h>
|
||||
#define FIRST_OPTION 1
|
||||
#define SECOND_OPTION 2
|
||||
#define THIRD_OPTION 3
|
||||
#define FOURTH_OPTION 4
|
||||
#define FIFTH_OPTION -1
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
int user_choice;
|
||||
while (true)
|
||||
{
|
||||
bool dont_pass = true;
|
||||
printf("Choose one of the following operations:\n");
|
||||
printf("\tAdd (%d)\n", FIRST_OPTION);
|
||||
printf("\tSubtract (%d)\n", SECOND_OPTION);
|
||||
printf("\tMultiply (%d)\n", THIRD_OPTION);
|
||||
printf("\tDivide (%d)\n", FOURTH_OPTION);
|
||||
printf("\tStop program (%d)\n", FIFTH_OPTION);
|
||||
do
|
||||
{
|
||||
printf("Enter your choice: ");
|
||||
scanf("%d", &user_choice);
|
||||
dont_pass = user_choice < FIFTH_OPTION || user_choice > FOURTH_OPTION || user_choice == 0;
|
||||
if (dont_pass)
|
||||
{
|
||||
printf("Input not allowed, please try again\n");
|
||||
}
|
||||
|
||||
} while (dont_pass);
|
||||
|
||||
if(user_choice == -1) return 0;
|
||||
|
||||
double first_operand;
|
||||
double second_operand;
|
||||
dont_pass = true;
|
||||
do
|
||||
{
|
||||
printf("Please enter the first operand: ");
|
||||
scanf("%lf", &first_operand);
|
||||
printf("Please enter the second operand: ");
|
||||
scanf("%lf", &second_operand);
|
||||
if(user_choice == FOURTH_OPTION && second_operand == 0)
|
||||
{
|
||||
printf("Division by zero\n");
|
||||
}
|
||||
else if (first_operand < DBL_MIN || second_operand < DBL_MIN)
|
||||
{
|
||||
printf("Number underflow\n");
|
||||
}
|
||||
else if(first_operand > DBL_MAX || second_operand > DBL_MAX)
|
||||
{
|
||||
printf("Number overflow\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
dont_pass = false;
|
||||
}
|
||||
}
|
||||
while (dont_pass);
|
||||
|
||||
double result;
|
||||
switch(user_choice)
|
||||
{
|
||||
case FIRST_OPTION:
|
||||
result = first_operand + second_operand;
|
||||
printf("The result is %.3f\n", result);
|
||||
break;
|
||||
case SECOND_OPTION:
|
||||
result = first_operand - second_operand;
|
||||
printf("The result is %0.3f\n", result);
|
||||
break;
|
||||
case THIRD_OPTION:
|
||||
result = first_operand * second_operand;
|
||||
printf("The result is %0.3f\n", result);
|
||||
break;
|
||||
case FOURTH_OPTION:
|
||||
result = first_operand / second_operand;
|
||||
printf("The result is %2.3f\n", result);
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue