/*alien number converter*/ #include #include 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); } }