С помощью разбора строки, вводимой с клавиатуры создать калькулятор, вычисляющий простейшие выражения типа: "1 + 7 - 3 * 2 =" результатом такого выражения будет 10 (приоритет операций не учитывается). Использовать только функци strtok. В дальнейшем модифицировать калькулятор так, чтобы он разбирал строки "1+7-3*2=", т.е. знаки операций искать с помощью strpbrk.
len = i = 0; result = 0; sign = '\0'; p = strtok(temp,"+-*/="); while(p && *p != '\n') { len += strlen(p); switch(sign) { case '\0': result = atoi(p); break; case '+': result += atoi(p); break; case '-': result -= atoi(p); break; case '*': result *= atoi(p); break; case '/': result /= atoi(p); break; } printf("%d : %3d; sign : %c\n",i++, atoi(p), (sign = s[len++])); p = strtok(NULL,"+-*/="); } free(temp); printf("\nresult = %5.2f\n", result); return 0; }
len = i = 0; result = 0; sign = '\0'; p = strtok(temp,"+-*/="); while(p && *p != '\n') { len += strlen(p); switch(sign) { case '\0': result = atoi(p); break; case '+': result += atoi(p); break; case '-': result -= atoi(p); break; case '*': result *= atoi(p); break; case '/': result /= atoi(p); break; } printf("%d : %3d; sign : %c\n",i++, atoi(p), (sign = s[len++])); p = strtok(NULL,"+-*/="); } free(temp); printf("\nresult = %5.2f\n", result); return 0; }
Круто! Спасибо за помощь!
Rocket
3.12.2007 0:18
А как модифицировать программу с помощью strpbrk, не используя strtok?