#include <stdio.h>
#include <stdlib.h>
#include <string.h>

float number = 0;
FILE * numberarray = NULL;
char wordv[80];
int wordc =0;
char * filename;
char bufferv[80];
int bufferc =0;



float get_dest()
{
	if (number != 0)
	{
		return number;
	}
	if (numberarray != NULL)
	{
		float tmp_num;
		char tmp = 'a';
		while ((tmp!=EOF)&&(tmp!=' ')&&(tmp!='\n'))
		{
			tmp = fgetc(numberarray);
			if (tmp == EOF)
			{
				numberarray = freopen(filename,"r",numberarray);
			}
			if(((tmp == EOF)||(tmp == '\n'))&&(bufferc == 0))
			{
				tmp = '0';
			}
			bufferv[bufferc] = tmp;
			bufferc++;
		}

		tmp_num = atof(bufferv);
		int cnt;
		for(cnt=0;cnt<bufferc;cnt++)
		{
			bufferv[cnt] = ' ';
		}
		bufferc = 0;

		return tmp_num;
	}
}

int main(int argc, char * argv[])
{
	if (argc == 3)
	{
		number = atof(argv[1]);
		if (number == 0)
		{
			filename = argv[1];
			numberarray = fopen(argv[1],"r");
			if (numberarray == NULL)
			{
				return 0;
			}
		}
	}
	

	char c;
	while (c != EOF)
	{
		c = getchar();
		if ((c != ' ')&&(c != '\n'))
		{
			wordv[wordc] = c;
			wordc++;
		}
		else
		{
			if((wordc != 0))
			{
				wordc = 0;
				float source = atof(wordv);
				float dest = get_dest();

				float result = 0;
				if(!strcmp(argv[2],"add"))
				{
					result = source+dest;
				}
				if(!strcmp(argv[2],"sub"))
				{
					result = source-dest;
				}
				if(!strcmp(argv[2],"mul"))
				{
					result = source*dest;
				}
				if(!strcmp(argv[2],"div"))
				{
					result = source/dest;
				}	
			
				printf("%f ",result);
			
				int clear;
				for (clear = 0; clear < 80 ; clear++)
				{
					wordv[clear] = ' ';
				}
			}
		}
	}
	
	return 0;
}
