Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- float expr();
- float skobki();
- float factor();
- float number()
- {
- char number[100];
- for (int i = 0; i < 100; i++)
- {
- number[i] = 0; //обнулям массив из char
- }
- int number_poz = 0; // на каком месте мы сейчас (куда дописывать char)
- while (1) {
- char c = cin.get();
- if (c >= '0' && c <= '9' || c == '.')
- {
- number[number_poz] = c;
- number_poz = number_poz + 1;
- }
- else
- {
- cin.putback(c);
- return atof(number);
- }
- }
- }
- float expr()
- {
- float x = factor();
- while (1) {
- char c = cin.get();
- switch (c) {
- case '+':
- x += factor();
- break;
- case '-':
- x -= factor();
- break;
- default:
- cin.putback(c);
- return x;
- }
- }
- }
- float skobki()
- {
- char c = cin.get();
- if (c == '(') {
- float x = expr();
- cin.get();
- return x;
- }
- else
- {
- cin.putback(c);
- return number();
- }
- }
- float factor()
- {
- float x = skobki();
- while (1)
- {
- char c = cin.get();
- switch (c)
- {
- case '*':
- x *= skobki();
- break;
- case '/':
- x /= skobki();
- break;
- default:
- cin.putback(c);
- return x;
- }
- }
- }
- int main()
- {
- cout << "enter an expression: " << expr() << endl;
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement