#include <stdio.h>
#include <iostream>
usingnamespace std;// чтобы не писать std::
float number(){ // считываем число
int res = 0;
for (;;)//бесконечный цикл
{
char c = getchar();//записываем
if (c >= '0' && c <= '9')//условие, что используются только цифры
res = res *10 + c - '0';//для корректной записи числа
else {
cin.putback(c);// возвращает символ назад в поток
break;//прерываем
}
}
return res;//возвращаем результат
}
float plmn();//чтобы компилятор увидел функцию в фактор
float skobki() {//скобки
char c = getchar();
if (c == '(') {
float x = plmn();
getchar();
return x;
}
else {//если не число,то
cin.putback(c);//возвращаем символ
return number();
}
}
float factor() { // функция деления и умножения
float x =skobki();
for (;;) {
char c = getchar();
switch (c) {
case'*': // если умножение
x *= skobki();
break;
case'/': // если деление
x /= skobki();
break;
default: //если неизвестный символ, то возвращаем в поток
cin.putback(c);// возвращаем символ назад
return x;//возвращаем результат
}
}
}
float plmn() { // функция сложения и вычитания
float x = factor();
for (;;) {
char c = getchar();
switch (c) {
case'+': // если сложение
x += factor();
break;
case'-': // если вычитание
x -= factor();
break;
default: //если неизвестный символ, то возвращаем в поток
cin.putback(c);// возвращаем символ назад
return x; //возвращаем результат
}
}
}
int main()
{
float r = plmn();//вызов функций по порядку
printf("Result= %0.3f", r);//результат
}
this code performs arithmetic expressions.
I will be very grateful for the help)
Need replace functions as getchar and cin.putback