funguje bez kontroly vstupu
This commit is contained in:
		
							parent
							
								
									c3191d3038
								
							
						
					
					
						commit
						2f95f9f843
					
				
							
								
								
									
										106
									
								
								du3/program.c
									
									
									
									
									
								
							
							
						
						
									
										106
									
								
								du3/program.c
									
									
									
									
									
								
							@ -1,6 +1,112 @@
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
float plus(float total, float number);
 | 
			
		||||
float minus(float total, float number);
 | 
			
		||||
float divided(float total, float number);
 | 
			
		||||
float multiplied(float total, float number); 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int main() {
 | 
			
		||||
	char buffer[999];
 | 
			
		||||
	char row[999];
 | 
			
		||||
	char equation[999][20];
 | 
			
		||||
	char output[999][10];
 | 
			
		||||
	int output_length = 0;
 | 
			
		||||
	int index = 0;
 | 
			
		||||
	int eq_index = 0;
 | 
			
		||||
	while (fgets(buffer, sizeof(buffer), stdin) != NULL) {
 | 
			
		||||
		if (buffer[0] == '\n') break;
 | 
			
		||||
		index = 0;
 | 
			
		||||
		eq_index = 0;
 | 
			
		||||
		int eq_operand_length = 0;
 | 
			
		||||
		while (buffer[index] != '\n') {
 | 
			
		||||
			if (buffer[index] != ' ') {
 | 
			
		||||
				equation[eq_index][eq_operand_length] = buffer[index];
 | 
			
		||||
				eq_operand_length++;
 | 
			
		||||
			}
 | 
			
		||||
			else {
 | 
			
		||||
				equation[eq_index][eq_operand_length] = '\0';
 | 
			
		||||
				eq_operand_length = 0;
 | 
			
		||||
				eq_index++;
 | 
			
		||||
			}
 | 
			
		||||
			index++;
 | 
			
		||||
		}
 | 
			
		||||
		float total = 0.0;
 | 
			
		||||
		int sign = 0;
 | 
			
		||||
		char out[10] = "";
 | 
			
		||||
		int n_of_signs = 0;
 | 
			
		||||
		char operators[6] = "+-=*/";
 | 
			
		||||
		char last_operator = '+';	
 | 
			
		||||
		for (int i=0;i<eq_index+1;i++) {
 | 
			
		||||
			n_of_signs = 0;
 | 
			
		||||
			for (int l=0; l<5;l++) {
 | 
			
		||||
				if (strchr(equation[i], operators[l]) != NULL) {
 | 
			
		||||
					n_of_signs++;	
 | 
			
		||||
				}
 | 
			
		||||
			}	
 | 
			
		||||
			if (((n_of_signs == 1) && sign && (strlen(equation[i]) == 1)) || ((n_of_signs == 0) && !sign)) {
 | 
			
		||||
				if (!sign) {
 | 
			
		||||
					switch (last_operator) {
 | 
			
		||||
						case '+':
 | 
			
		||||
							total = plus(total, atof(equation[i]));
 | 
			
		||||
							break;
 | 
			
		||||
						case '-':
 | 
			
		||||
							total = minus(total, atof(equation[i]));
 | 
			
		||||
							break;
 | 
			
		||||
						case '*':
 | 
			
		||||
							total = multiplied(total, atof(equation[i]));
 | 
			
		||||
							break;
 | 
			
		||||
						case '/':
 | 
			
		||||
							total = divided(total, atof(equation[i]));
 | 
			
		||||
							break;
 | 
			
		||||
						case '=':
 | 
			
		||||
							if (total == atof(equation[i])) {
 | 
			
		||||
								strcpy(output[output_length], "OK");
 | 
			
		||||
								output_length++;
 | 
			
		||||
							}
 | 
			
		||||
							else {
 | 
			
		||||
								strcpy(output[output_length], "ZLE");
 | 
			
		||||
								output_length++;
 | 
			
		||||
							}
 | 
			
		||||
							break;
 | 
			
		||||
					} 
 | 
			
		||||
				}
 | 
			
		||||
				else {
 | 
			
		||||
					last_operator = equation[i][0];
 | 
			
		||||
				}			
 | 
			
		||||
			}
 | 
			
		||||
		       	else {
 | 
			
		||||
				strcpy(output[output_length], "CHYBA");
 | 
			
		||||
				output_length++;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
			sign = !sign;	
 | 
			
		||||
		}
 | 
			
		||||
		//printf("%s\n",out);
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
	for (int i=0; i<output_length; i++) {
 | 
			
		||||
		printf("%s\n", output[i]);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
float plus(float total, float number) {
 | 
			
		||||
	return total + number;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
float minus(float total, float number) {
 | 
			
		||||
	return total - number;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
float divided(float total, float number) {
 | 
			
		||||
	return total / number;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
float multiplied(float total, float number) {
 | 
			
		||||
	return total * number;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user