#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)
	{
		printf("%s", "> ");
		printf("%.16g\n", calc());
	}
	
	return 0;
}

double calc(void)
{
	int i, j;
	char ch;
	char op[2]; // стек операторов
	char str[N]; // строка под число
	double num[2]; // стек чисел
	
	i = 0;
	j = 0;
	do
	{
		ch = getchar();
		
		// парсим ввод на числа и операторы
		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];
}