So i thought of creating two different function, the first one is gonna be statement scanning
and the second one is gonna be calculating the statements .
so this is my statement receiving function: I hope you can provide me with any shorter substitute or any improvement :]
Code:
int Statement()
{
char in, op; // in as in input and op as in operation
int result, not = 0, val1 = 0, val2 = 0;
scanf("%c", &in);
if (in == '~') {
not = 1;
scanf("%c", &in);
if (in != '(') {
printf("You have a syntax error in your statement\n");
return 0;
}
}
//first value
scanf("%c", &in);
if ((in <= 'f' && in >= 'a') || (in <= 'F' && in >= 'A')) {
val1 = (int) in;
scanf("%c", &in);
if (in == '<' || in == '>' || in == '=') {
op = in;
} else {
printf("You have a syntax error in your statement\n");
return 0;
}
}
if (in <= '9' && in >= '0') {
do {
val1 *= 10;
val1 += (int) in;
scanf("%c", &in);
} while (in <= '9' && in >= '0');
op = in;
} else {
printf("You have a syntax error in your statement\n");
return 0;
}
// second value
scanf("%c", &in);
if ((in <= 'f' && in >= 'a') || (in <= 'F' && in >= 'A')) {
val2 = (int) in;
scanf("%c", &in);
if (in == '<' || in == '>' || in == '=') {
op = in;
} else {
printf("You have a syntax error in your statement\n");
return 0;
}
}
if (in <= '9' && in >= '0') {
do {
val2 *= 10;
val2 += (int) in;
scanf("%c", &in);
} while (in <= '9' && in >= '0');
op = in;
} else {
printf("You have a syntax error in your statement\n");
return 0;
}
if (op == '=') {
result = val1 == val2;
}
if (op == '>') {
result = val1 > val2;
}
if (op == '<') {
result = val1 < val2;
}
if (not == 1) {
return !result;
} else
return result;
}