I created my first program in C: a simple calculator. I want to know if it is possible to make this code more effective. Is it, for example, possible to change the calculator function so that I don't have to use switch, but the code knowing what to do because of the character that is entered?
#include <stdio.h>
#include <stdlib.h>
char input[20];
char num[20];
int i;
int minus = 1;
float answer, num1, num2;
char operations;
void extractNumbers();
void calculate();
int main()
{
gets(input);
extractNumbers();
calculate();
printf("Answer: %f", num1);
return 0;
}
void extractNumbers(){
for(i = 0; i < 20; i++){
if(isdigit(input[i]) || input[i] == '.'){
strncat(num, &input[i], 1);
}
if((input[i] == '-' && i == 0) || (input[i] == '-' && !isdigit(input[i-1]))){
minus = -1;
continue;
}
if(input[i] == '+' || input[i] == '-' || input[i] == '*' || input[i] == '/' || input[i] == '^'){
num1 = atof(num) * minus;
minus = 1;
strcpy(num, "");
operations = input[i];
}
}
}
void calculate(){
num2 = atof(num) * minus;
switch(operations){
case '+':
num1 += num2;
break;
case '-':
num1 -= num2;
break;
case '*':
num1 *= num2;
break;
case '/':
num1 /= num2;
break;
}
}