Вот пример реализации ОПЗ, возможно местами криво. Как из этого сделать бинарное дерево? У меня идея была построить двумерный массив и уже оттуда считать правда трудно получается.
#include <iostream>
#include <conio.h>
#include <cmath>
using namespace std;
//ОПЗ запись с++
int main()
{
setlocale(LC_ALL, "Russian");
int i = 0, s = 0, e = 0, n1 = 0, v = 0, ch, s2 = 0;
char vr[100], stek[100], exit[100];
double stek2[100];
cout << "Введите выражение: \n";
cin >> vr;
for (i = 0; vr[i] != '\0'; i++)
switch (vr[i])
{
case '+':
while ((s != 0) && (stek[s - 1] != '('))
{
exit[e] = stek[s - 1]; //на выход
e++;
s--;
}
stek[s] = '+'; //в стек
s++;
break;
case '-':
while ((s != 0) && (stek[s - 1] != '('))
{
exit[e] = stek[s - 1];
e++;
s--;
}
stek[s] = '-';
s++;
break;
case '*':
while ((s != 0) && (stek[s - 1] != '(') && (stek[s - 1] != '+') && (stek[s - 1] != '-'))
{
exit[e] = stek[s - 1];
e++;
s--;
}
stek[s] = '*';
s++;
break;
case '/':
while ((s != 0) && (stek[s - 1] != '(') && (stek[s - 1] != '+') && (stek[s - 1] != '-'))
{
exit[e] = stek[s - 1];
e++;
s--;
}
stek[s] = '/';
s++;
break;
case '(':
{
stek[s] = '(';
s++;
break; }
case ')':
while ((stek[s - 1] != '(') && (s != 0))
{
exit[e] = stek[s - 1];
e++;
s--;
}
stek[s - 1] = ' ';
s--;
break;
default:
{
exit[e] = vr[i];
e++;
if ((vr[i + 1] == '+') || (vr[i + 1] == '-') || (vr[i + 1] == '*') || (vr[i + 1] == '/') || (vr[i + 1] == '(') || (vr[i + 1] == ')'))
{
exit[e] = ' ';
e++;
}
}
}
exit[e] = ' ';
e++;
while (s != 0)
{
exit[e] = stek[s - 1];
e++;
s--;
}
cout << "ОПЗ ";
for (i = 0; i < e; i++)
{
cout << exit[i];
}
system("pause");
return 0;
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть код, который расписывает матрицу и считает суммы диагоналей(будет ниже) В коде есть функция которая задаёт размер матрицы с клавиатуры(Матрица...
Ребят, помогите, пожалуйста с реализацией алгоритма cosалгоритм cos Описанный там алгоритм, не могу понять, может сможете объяснить на понятном...