Есть простой анализатор формул ( " / * - + ( ) " ).
| Код | #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <locale.h>
double calc(char op) { double a,b,c=0.0; char op1='+', op2, op3; while(op1!=op) { if(scanf("%lg %c",&a, &op2)!=2 && getchar()=='(') { a=calc(')'); scanf(" %c",&op2); } while(op2=='*' || op2=='/') { if(scanf("%lg %c",&b, &op3)!=2 && getchar()=='(') { b=calc(')'); scanf(" %c",&op3); } if(op2=='*')a*=b; else if(op2=='/')a/=b; op2=op3; } if(op1=='+')c+=a; else if(op1=='-')c-=a; op1=op2; } return c; } int main() { setlocale(LC_CTYPE,".866"); do { system("cls"); wprintf(L"Введите формулу для вычисления и закончите ее знаком '='\n"); printf("%lG\n",calc('=')); wprintf(L"\nEsc закончить, любая клавиша - продолжить..."); }while(getch()!=0x1B);
return 0; }
|
Поставлена задача: Дана формула(в файле). Нам надо прочитать из файла,проанализировать и выдать ответ на экран или в файл. мой черновик:
| Код | #include <stdio.h> #include <stdlib.h> #include <conio.h> #include<fstream.h> #include<iostream.h>
char calc(char op) { char a,b,c; char op1='+', op2, op3; ifstream file; file.open("d:\test.txt",ios::in); while(op1!=op) { if((file.get(a)&&file.get(op2)) && file.get()=='(') { a=calc(')'); file.get(op2); } while(op2=='*' || op2=='/') { if((file.get(b)&&file.get(op3)) && file.get()=='(') { b=calc(')'); file.get(op3); } if(op2=='*')a*=b; else if(op2=='/')a/=b; op2=op3; } if(op1=='+')c+=a; else if(op1=='-')c-=a; op1=op2; } file.close(); return c; } int main() {
printf("%c\n",calc('='));
return 0; }
|
|