#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <stdbool.h>
// максимальное количество цифор в числе
#define N 20
double calc(void);
int main(void)
{
puts("Math 0.0.1 by Mr. Anonson, 2019");
while (true)
{
}
return 0;
}
double calc(void)
{
int i, j;
char ch;
char op[2]; // стек операторов
char str[N]; // строка под число
double num[2]; // стек чисел
i = 0;
j = 0;
do
{
// парсим ввод на числа и операторы
switch (ch)
{
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
case '.':
if (i < N-1)
{
str[i] = ch; // загоняем символы цифор в строку
i++;
}
break;
case '+':
case '-':
if (j == 0)
{
op[1] = ch; // костыль для первого выражения
}
else
{
op[0] = ch; // загоняем символы операторов в стек
}
case '\n':
str[i] = '\0';
num
[j
] = atof(str
); // переводим строку в число и загоняем в стек i = 0;
j++;
break;
}
if (j == 2)
{
/* // для отладки
printf("num[0] = %g\n", num[0]);
printf("num[1] = %g\n", num[1]);
printf("op[1] = %c\n", op[1]); */
// считаем выраженя по порядку
switch (op[1])
{
case '+':
num[0] += num[1];
break;
case '-':
num[0] -= num[1];
break;
}
op[1] = op[0];
j = 1;
}
}
while (ch != '\n');
return num[0];
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPG1hdGguaD4KI2luY2x1ZGUgPHN0ZGJvb2wuaD4KCi8vINC80LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRhtC40YTQvtGAINCyINGH0LjRgdC70LUKI2RlZmluZSBOIDIwCgpkb3VibGUgY2FsYyh2b2lkKTsKCmludCBtYWluKHZvaWQpCnsKCXB1dHMoIk1hdGggMC4wLjEgIGJ5IE1yLiBBbm9uc29uLCAyMDE5Iik7CgoJd2hpbGUgKHRydWUpCgl7CgkJcHJpbnRmKCIlcyIsICI+ICIpOwoJCXByaW50ZigiJS4xNmdcbiIsIGNhbGMoKSk7Cgl9CgkKCXJldHVybiAwOwp9Cgpkb3VibGUgY2FsYyh2b2lkKQp7CglpbnQgaSwgajsKCWNoYXIgY2g7CgljaGFyIG9wWzJdOyAvLyDRgdGC0LXQuiDQvtC/0LXRgNCw0YLQvtGA0L7QsgoJY2hhciBzdHJbTl07IC8vINGB0YLRgNC+0LrQsCDQv9C+0LQg0YfQuNGB0LvQvgoJZG91YmxlIG51bVsyXTsgLy8g0YHRgtC10Log0YfQuNGB0LXQuwoJCglpID0gMDsKCWogPSAwOwoJZG8KCXsKCQljaCA9IGdldGNoYXIoKTsKCQkKCQkvLyDQv9Cw0YDRgdC40Lwg0LLQstC+0LQg0L3QsCDRh9C40YHQu9CwINC4INC+0L/QtdGA0LDRgtC+0YDRiwoJCXN3aXRjaCAoY2gpCgkJewoJCQljYXNlICcwJzoKCQkJY2FzZSAnMSc6CgkJCWNhc2UgJzInOgoJCQljYXNlICczJzoKCQkJY2FzZSAnNCc6CgkJCWNhc2UgJzUnOgoJCQljYXNlICc2JzoKCQkJY2FzZSAnNyc6CgkJCWNhc2UgJzgnOgoJCQljYXNlICc5JzoKCQkJY2FzZSAnLic6CgkJCQlpZiAoaSA8IE4tMSkKCQkJCXsKCQkJCQlzdHJbaV0gPSBjaDsgLy8g0LfQsNCz0L7QvdGP0LXQvCDRgdC40LzQstC+0LvRiyDRhtC40YTQvtGAINCyINGB0YLRgNC+0LrRgwoJCQkJCWkrKzsKCQkJCX0KCQkJCWJyZWFrOwoJCQljYXNlICcrJzoKCQkJY2FzZSAnLSc6CgkJCQlpZiAoaiA9PSAwKQoJCQkJewoJCQkJCW9wWzFdID0gY2g7IC8vINC60L7RgdGC0YvQu9GMINC00LvRjyDQv9C10YDQstC+0LPQviDQstGL0YDQsNC20LXQvdC40Y8KCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQlvcFswXSA9IGNoOyAvLyDQt9Cw0LPQvtC90Y/QtdC8INGB0LjQvNCy0L7Qu9GLINC+0L/QtdGA0LDRgtC+0YDQvtCyINCyINGB0YLQtdC6CgkJCQl9CgkJCWNhc2UgJ1xuJzoKCQkJCXN0cltpXSA9ICdcMCc7CgkJCQludW1bal0gPSBhdG9mKHN0cik7IC8vINC/0LXRgNC10LLQvtC00LjQvCDRgdGC0YDQvtC60YMg0LIg0YfQuNGB0LvQviDQuCDQt9Cw0LPQvtC90Y/QtdC8INCyINGB0YLQtdC6CgkJCQlpID0gMDsKCQkJCWorKzsKCQkJCWJyZWFrOwoJCX0KCQlpZiAoaiA9PSAyKQoJCXsKCQkJLyogLy8g0LTQu9GPINC+0YLQu9Cw0LTQutC4CgkJCXByaW50ZigibnVtWzBdID0gJWdcbiIsIG51bVswXSk7CgkJCXByaW50ZigibnVtWzFdID0gJWdcbiIsIG51bVsxXSk7CgkJCXByaW50Zigib3BbMV0gPSAlY1xuIiwgb3BbMV0pOyAqLwoJCQkKCQkJLy8g0YHRh9C40YLQsNC10Lwg0LLRi9GA0LDQttC10L3RjyDQv9C+INC/0L7RgNGP0LTQutGDCgkJCXN3aXRjaCAob3BbMV0pCgkJCXsKCQkJCWNhc2UgJysnOgoJCQkJCW51bVswXSArPSBudW1bMV07CgkJCQkJYnJlYWs7CgkJCQljYXNlICctJzoKCQkJCQludW1bMF0gLT0gbnVtWzFdOwoJCQkJCWJyZWFrOwoJCQl9CgkJCW9wWzFdID0gb3BbMF07CgkJCWogPSAxOwoJCX0KCX0KCXdoaWxlIChjaCAhPSAnXG4nKTsKCQoJcmV0dXJuIG51bVswXTsKfQ==
MSsxCtCvINGC0LDQuiDQv9C+0L3Rj9C7LCDRgtGD0YIg0LLRi9Cy0L7QtCDQvdC1INGA0LDQsdC+0YLQsNC10YIg0L3QsCDQsdC10YHQutC+0L3QtdGH0L3Ri9GFINGG0LjQutC70LDRhS4gOig=
1+1
Я так понял, тут вывод не работает на бесконечных циклах. :(