I want to make my calculator code shorter.
Here is my code:
extern "C"
{
int printf(const char *format, ...);
extern int scanf(const char *format, ...);
double pow(double x, double y);
}
int main()
{
do
{
double num1;
double a, b = 1;
char ch1;
float r;
scanf("%lf", &num1);
printf("\ta - Factorial\n\tb - Continue\n");
scanf(" %c", &ch1);
switch (ch1)
{
case 'a':
r = b;
for (a = 1; a <= num1; a++)
{
b = b * a;
}
if (b < 500000001 & num1 > 0)
{
printf("%f\n", b);
}
else
{
if (b > 500000000)
{
printf("Number is Big\n");
}
if (num1 < 1)
{
printf("Number is Small\n");
}
}
break;
case 'b':
double num2;
char ch2;
scanf("%lf", &num2);
printf("\ta - Add\n\tb - Substract\n\tc - Multiply\n\td - Divide\n\te - Power\n\tf - Radical\n");
scanf(" %c", &ch2);
switch (ch2)
{
case 'a':
r = num1 + num2;
if (num1 + num2 < 500000001 & num1 + num2 > -500000001 & num1 - num2 < 500000001 & num2 - num1 < 500000001)
{
printf("%lf + %lf = %f\n", num1, num2, r);
}
else if (num1 + num2 > 500000000)
{
printf("Number is Big\n");
}
break;
case 'b':
r = num1 - num2;
if (num1 + num2 < 500000001 & num1 + num2 > -500000001 & num1 - num2 < 500000001 & num2 - num1 < 500000001)
{
printf("%lf - %lf = %f\n", num1, num2, r);
}
else if (num1 + num2 > 500000000)
{
printf("Number is Big\n");
}
break;
case 'c':
r = num1 * num2;
if (num1 * num2 < 500000001 & num1 * num2 > -500000001)
{
printf("%lf * %lf = %f\n", num1, num2, r);
}
else
{
if (num1 * num2 > 500000000)
{
printf("Number is Big\n");
}
if (num1 * num2 < -500000000)
{
printf("Number is Small\n");
}
}
break;
case 'd':
r = num1 / num2;
if (num1 * num2 < 500000001 & num1 * num2 > -500000001 && num2 > 0 | num1 == 0 & num2 != 0)
{
printf("%lf / %lf = %f\n", num1, num2, r);
}
else
{
if (num1 * num2 > 500000000)
{
printf("Number is Big\n");
}
if (num1 * num2 < -500000000)
{
printf("Number is Small\n");
}
if (num1 > 0 & num2 == 0 | num1 == 0 & num2 == 0)
{
printf("Undefined\n");
}
}
break;
case 'e':
r = pow(num1, num2);
if (pow(num1, num2) < 500000001 & pow(num1, num2) > -500000001)
{
printf("%lf ^ %lf = %f\n", num1, num2, r);
}
else
{
if (pow(num1, num2) > 500000000)
{
printf("Number is Big\n");
}
if (pow(num1, num2) > -500000000)
{
printf("Number is Small\n");
}
}
case 'f':
r = pow(num1, 1 / num2);
if (pow(num1, num2) < 500000001 & pow(num1, num2) > -500000001)
{
printf("%lf √ %lf = %f\n", num1, num2, r);
}
else
{
if (pow(num1, num2) > 500000000)
{
printf("Number is Big\n");
}
if (pow(num1, num2) > -500000000)
{
printf("Number is Small\n");
}
}
break;
default:
printf("Invalid\n");
}
break;
}
}
while (1);
}
Can I make this code shorter? Is it possible to do? If it is, how?
(This code may be updated in my GitHub account.)
#include
, anyway? That's the standard means of accessing library functions, and much safer than declaring standard functions as you have done here. \$\endgroup\$