/*alien number converter*/

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


void main()
{
	char input[255],*work;
	char decimal=0;
	double number=0;
	double divisor=1;
	int half;						/*middle point where to stop scanning*/

	while(1)
	{
	number = 0;
	divisor = 1;
	decimal = 0;

	printf("Enter the alien number:\n");
	gets(input);

	if(input[strlen(input)-1] == '\r')
		input[strlen(input)-1] = 0;

	half = strlen(input)/2;

	if(strchr(input,'d'))	/*decimal notation found*/
		{
		divisor = 1.0/6.0;
		decimal = 1;
		}

	work = input + half;
	while(*work)
		{
		switch( *work )
			{
			case 'A':	/*value 0*/
			case 'B':	/*value 1*/
			case 'C':	/*value 2*/
			case 'D':	/*value 3*/
			case 'E':	/*value 4*/
			case 'F':	/*value 5*/
				number += (*work - 'A') * divisor;
				if(decimal)
					divisor /= 6;
				else
					divisor *= 6;
				break;
			case 'd':	/*decimal notation*/
				decimal = 0;
				divisor = 1;
				break;
			case 'K':	/*negative notation*/
				number = -number;
				break;
			case 'O':	/*reciprocal notation*/
				number = 1/number;
				break;
			}
		work++;
		}

	printf("\n%lf\n",number);
	}
}
