Изменить 'du4/program.c'
^^
This commit is contained in:
parent
9fef31bff3
commit
95212f7acd
@ -4,33 +4,32 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
int main(){
|
int main() {
|
||||||
char* input = (char*) calloc (100, sizeof(char));
|
char* input = (char*) calloc(100, sizeof(char));
|
||||||
char symbol;
|
char symbol;
|
||||||
int counter;
|
int counter;
|
||||||
int operation;
|
int operation;
|
||||||
char* number1 = (char*) calloc (25, sizeof(char));
|
char* number1 = (char*) calloc(25, sizeof(char));
|
||||||
char* number2 = (char*) calloc (25, sizeof(char));
|
char* number2 = (char*) calloc(25, sizeof(char));
|
||||||
char* result = (char*) calloc (30, sizeof(char));
|
char* result = (char*) calloc(30, sizeof(char));
|
||||||
char* ptr;
|
char* ptr;
|
||||||
bool equals = false;
|
bool equals = false;
|
||||||
|
|
||||||
for(int i = 0; fgets(input, 100, stdin) != NULL; i++){
|
for(int i = 0; fgets(input, 100, stdin) != NULL; i++){
|
||||||
if(!input || !strcmp(input, "") || input[0] == EOF || input[0] == '\n' || input[0] == '\0')
|
if(!input || !strcmp(input, "") || input[0] == EOF || input[0] == '\n' || input[0] == '\0')
|
||||||
break;
|
break;
|
||||||
counter = 0;
|
counter = 0;
|
||||||
operation = 0;
|
operation = 0;
|
||||||
equals = false;
|
equals = false;
|
||||||
memset(number1, '\0', 25);
|
memset(number1, '\0', 25);
|
||||||
memset(number2, '\0', 25);
|
memset(number2, '\0', 25);
|
||||||
|
while(input[counter] != '\0' && input[counter] != '\n'){
|
||||||
while (input[counter] != '\0' && input[counter] != '\n'){
|
|
||||||
symbol = input[counter++];
|
symbol = input[counter++];
|
||||||
while(isspace(symbol))
|
while (isspace(symbol))
|
||||||
symbol = input[counter++];
|
symbol = input[counter++];
|
||||||
if(symbol == '\0' || symbol == '\n')
|
if(symbol == '\0' || symbol == '\n')
|
||||||
break;
|
break;
|
||||||
switch(symbol){
|
switch (symbol) {
|
||||||
case '+':
|
case '+':
|
||||||
operation = 1;
|
operation = 1;
|
||||||
break;
|
break;
|
||||||
@ -47,19 +46,19 @@ int main(){
|
|||||||
equals = true;
|
equals = true;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if(isdigit(symbol) || symbol == '.'){
|
if (isdigit(symbol) || symbol == '.'){
|
||||||
if(operation == 0)
|
if (operation == 0)
|
||||||
number1 += symbol;
|
number1 += symbol;
|
||||||
else if (!equals)
|
else if(!equals)
|
||||||
number2 += symbol;
|
number2 += symbol;
|
||||||
else
|
else
|
||||||
result += symbol;
|
result += symbol;
|
||||||
}
|
}
|
||||||
else {
|
else{
|
||||||
printf("CHYBA");
|
printf("CHYBA\n");
|
||||||
goto LABEL;
|
goto LABEL;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
LABEL:
|
LABEL:
|
||||||
@ -68,18 +67,18 @@ int main(){
|
|||||||
printf("%s\n", (strtof(number1, &ptr) + strtof(number2, &ptr) > strtof(result, &ptr) - 0.001 && strtof(number1, &ptr) + strtof(number2, &ptr) < strtof(result, &ptr) + 0.001) ? "OK" : "ZLE");
|
printf("%s\n", (strtof(number1, &ptr) + strtof(number2, &ptr) > strtof(result, &ptr) - 0.001 && strtof(number1, &ptr) + strtof(number2, &ptr) < strtof(result, &ptr) + 0.001) ? "OK" : "ZLE");
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
printf("%s\n", (strtof(number1, &ptr) + strtof(number2, &ptr) > strtof(result, &ptr) - 0.001 && strtof(number1, &ptr) - strtof(number2, &ptr) < strtof(result, &ptr) + 0.001) ? "OK" : "ZLE");
|
printf("%s\n", (strtof(number1, &ptr) - strtof(number2, &ptr) > strtof(result, &ptr) - 0.001 && strtof(number1, &ptr) - strtof(number2, &ptr) < strtof(result, &ptr) + 0.001) ? "OK" : "ZLE");
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
printf("%s\n", (strtof(number1, &ptr) + strtof(number2, &ptr) > strtof(result, &ptr) - 0.001 && strtof(number1, &ptr) * strtof(number2, &ptr) < strtof(result, &ptr) + 0.001) ? "OK" : "ZLE");
|
printf("%s\n", (strtof(number1, &ptr) * strtof(number2, &ptr) > strtof(result, &ptr) - 0.001 && strtof(number1, &ptr) * strtof(number2, &ptr) < strtof(result, &ptr) + 0.001) ? "OK" : "ZLE");
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
printf("%s\n", (strtof(number1, &ptr) + strtof(number2, &ptr) > strtof(result, &ptr) - 0.001 && strtof(number1, &ptr) / strtof(number2, &ptr) < strtof(result, &ptr) + 0.001) ? "OK" : "ZLE");
|
printf("%s\n", (strtof(number1, &ptr) / strtof(number2, &ptr) > strtof(result, &ptr) - 0.001 && strtof(number1, &ptr) / strtof(number2, &ptr) < strtof(result, &ptr) + 0.001) ? "OK" : "ZLE");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
printf("CHYBA");
|
printf("CHYBA\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user