diff --git a/du4/program.c b/du4/program.c index 8b65b66..8477261 100644 --- a/du4/program.c +++ b/du4/program.c @@ -1,93 +1,91 @@ #include -#include #include +#include #include -int Program() { - static void Main(string[] args) { - int ch = Console.Read(); - string priklad = ""; - int count = 0; +int main() { + int ch = getchar(); + char priklad[300]; + int count = 0; - while (true) { - priklad += (char)ch; - if (ch == '\n') { - count++; + for (int idx = 0; 1; idx++) { + priklad[idx] = ch; + if (ch == '\n') { + count++; + } + ch = getchar(); + if ((priklad[idx] == '\n' && ch == '\n') || ch == EOF) { + break; + } + } + + char *start = priklad, *end = NULL; + + for (int c = 0; c < count; c++) { + int skip = 0, z = 0; + + for (int idx = 0; start[idx] != '\n'; idx++) { + if (start[idx] == '+' || start[idx] == '-' || start[idx] == '*' || start[idx] == '/') { + z = 1; } - ch = Console.Read(); - if ((priklad[priklad.Length - 1] == '\n' && ch == '\n') || ch == -1) { + if ((start[idx] < '0' || start[idx] > '9') && start[idx] != ' ' && start[idx] != '=' && start[idx] != '+' && start[idx] != '-' && start[idx] != '*' && start[idx] != '/' && start[idx] != '.') { + skip = 1; + printf("CHYBA\n"); + while ((*start) != '\n') { + start++; + } + start++; break; } } - string start = priklad; - string end = null; + if (skip == 1) { + continue; + } + if (z == 0) { + while ((*start) != '\n') { + start++; + } + start++; + printf("CHYBA\n"); + continue; + } + float num1 = strtof(start, &end); + if (end == start) { + printf("KONIEC\n"); + } + while ((*start) != '+' && (*start) != '-' && (*start) != '/' && (*start) != '*') { + start++; + } + char znak = (*start); + start++; - for (int c = 0; c < count; c++) { - int skip = 0, z = 0; + float num2 = strtof(start, &end); + start = end; + while (((*start) < '0' || (*start) > '9') && (*start) != '-') { + start++; + } - for (int idx = 0; start[idx] != '\n'; idx++) { - if (start[idx] == '+' || start[idx] == '-' || start[idx] == '*' || start[idx] == '/') { - z = 1; - } - if ((start[idx] < '0' || start[idx] > '9') && start[idx] != ' ' && start[idx] != '=' && start[idx] != '+' && start[idx] != '-' && start[idx] != '*' && start[idx] != '/' && start[idx] != '.') { - skip = 1; - Console.WriteLine("CHYBA"); - while (start[0] != '\n') { - start = start.Substring(1); - } - start = start.Substring(1); - break; - } - } + float vysledok2 = strtof(start, &end); + start = end; + start++; + float vysledok = 0; - if (skip == 1) { - continue; - } - if (z == 0) { - while (start[0] != '\n') { - start = start.Substring(1); - } - start = start.Substring(1); - Console.WriteLine("CHYBA"); - continue; - } - float num1 = float.Parse(start, out end); - if (end == start) { - Console.WriteLine("KONIEC"); - } - while (start[0] != '+' && start[0] != '-' && start[0] != '/' && start[0] != '*') { - start = start.Substring(1); - } - char znak = start[0]; - start = start.Substring(1); - - float num2 = float.Parse(start, out end); - start = end; - while ((start[0] < '0' || start[0] > '9') && start[0] != '-') { - start = start.Substring(1); - } - - float vysledok2 = float.Parse(start, out end); - start = end; - start = start.Substring(1); - float vysledok = 0; - - if (znak == '-') { - vysledok = num1 - num2; - } else if (znak == '+') { - vysledok = num1 + num2; - } else if (znak == '*') { - vysledok = num1 * num2; - } else if (znak == '/') { - vysledok = num1 / num2; - } - vysledok = (float)Math.Round(vysledok * 100) / 100; - if (Math.Abs(vysledok2 - vysledok) < 0.001) { - Console.WriteLine("OK"); - } else { - Console.WriteLine("ZLE"); - } + if (znak == '-') { + vysledok = num1 - num2; + } else if (znak == '+') { + vysledok = num1 + num2; + } else if (znak == '*') { + vysledok = num1 * num2; + } else if (znak == '/') { + vysledok = num1 / num2; + } + vysledok = (round(vysledok * 100)) / 100; + if (vysledok2 - vysledok < 0.001 && vysledok2 - vysledok > -0.001) { + printf("OK\n"); + } else { + printf("ZLE\n"); } } -} \ No newline at end of file + return EXIT_SUCCESS; +}