Оцените пж код c++ консоль v2 я ещё не все функции сделал
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
#include <iostream>
#include <string>
#include <sstream>
#include <stack>
#include <cctype>
#include <stdexcept>
int getPriority(char op) {
if (op == '+' || op == '-') return 1;
if (op == '*' || op == '/') return 2;
return 0;
}
void script(const std::string& args) {
if (args == "add") {
std::cout << "Выполняется действие: add\n";
}
else if (args == "remove") {
std::cout << "Выполняется действие: remove\n";
}
else if (args == "open") {
std::cout << "Выполняется действие: open\n";
}
else if (args == "stop") {
std::cout << "Выполняется действие: stop\n";
}
else if (args == "") {
std::cout << "Команда dir\n";
}
}
void echo(const std::string& args) {
std::cout << args;
}
void echos(const std::string& args) {
std::cout << args << "\n";
}
void s_echo_s(const std::string& args) {
std::cout << "\n" << args << "\n";
}
void s(int args) {
while (args != 0) {
std::cout << "\n";
args--;
}
}
double applyOp(double a, double b, char op) {
switch (op) {
case '+': return a + b;
case '-': return a - b;
case '*': return a * b;
case '/':
if (b == 0) throw std::runtime_error("Деление на ноль");
return a / b;
}
return 0;
}
double evaluate(const std::string& tokens) {
std::stack<double> values;
std::stack<char> ops;
for (size_t i = 0; i < tokens.length(); i++) {
if (isspace(tokens[i]))
continue;
if (isdigit(tokens[i]) || tokens[i] == '.') {
std::stringstream ss;
while (i < tokens.length() && (isdigit(tokens[i]) || tokens[i] == '.')) {
ss << tokens[i++];
}
i--;
double val;
ss >> val;
values.push(val);
}
else if (tokens[i] == '(') {
ops.push(tokens[i]);
}
else if (tokens[i] == ')') {
while (!ops.empty() && ops.top() != '(') {
double val2 = values.top(); values.pop();
double val1 = values.top(); values.pop();
char op = ops.top(); ops.pop();
values.push(applyOp(val1, val2, op));
}
if (!ops.empty())
ops.pop();
}
else {
while (!ops.empty() && getPriority(ops.top()) >= getPriority(tokens[i])) {
double val2 = values.top(); values.pop();
double val1 = values.top(); values.pop();
char op = ops.top(); ops.pop();
values.push(applyOp(val1, val2, op));
}
ops.push(tokens[i]);
}
}
while (!ops.empty()) {
double val2 = values.top(); values.pop();
double val1 = values.top(); values.pop();
char op = ops.top(); ops.pop();
values.push(applyOp(val1, val2, op));
}
return values.top();
}
int main() {
setlocale(LC_ALL, "Russian");
std::string line;
std::string start;
while (true) {
std::cout << start;
std::getline(std::cin, line);
if (line == "help") {
std::cout << "calc() - калькулятор\n";
std::cout << "echo() - вывод на экран\n";
std::cout << "echo_s() - вывод на экран с новой строки\n";
std::cout << "s_echo_s() - вывод на экран\n";
std::cout << "s() - новая строка\n";
std::cout << "cd() - путь к папке\n";
std::cout << "defcd() - ставит начальный путь к папке\n";
std::cout << "open() - открыть файл\n";
std::cout << "create() - создать файл\n";
std::cout << "delete() - удалить файл\n";
std::cout << "edit() - изменить файл\n";
std::cout << "script() - открыть папку где хранятся скрипты || создает базовый скрипт || выполняет скрипт\n";
std::cout << "pc() - узнать информацию о пк\n";
std::cout << "canvas() - нарисовать объект на экране (удобно в скриптах) || удалить объект || скрыть объект\n";
std::cout << "clr() - очистить консоль\n";
}
else if (line.size() >= 6 && line.substr(0, 5) == "calc(" && line.back() == ')') {
std::string expr = line.substr(5, line.size() - 6);
try {
double result = evaluate(expr);
std::cout << "Результат: " << result << "\n";
}
catch (const std::exception& e) {
std::cout << "Ошибка вычисления: " << e.what() << "\n";
}
}
else if (line.size() >= 6 && line.substr(0, 5) == "echo(" && line.back() == ')') {
std::string arg = line.substr(5, line.size() - 6);
if (arg != "") {
echos(arg);
}
else {
std::cout << "error";
}
}
else if (line.size() >= 8 && line.substr(0, 7) == "echo_s(" && line.back() == ')') {
std::string arg = line.substr(7, line.size() - 8);
if (arg != "") {
echos(arg);
}
else {
std::cout << "error";
}
}
else if (line.size() >= 10 && line.substr(0, 9) == "s_echo_s(" && line.back() == ')') {
std::string arg = line.substr(9, line.size() - 10);
if (arg != "") {
s_echo_s(arg);
}
else {
std::cout << "error";
}
}
else if (line.size() >= 3 && line.substr(0, 2) == "s(" && line.back() == ')') {
std::string arg = line.substr(2, line.size() - 3);
if (arg != "") {
int i = std::stoi(arg);
s(i);
}
else {
std::cout << "error";
}
}
else if (line.size() >= 8 && line.substr(0, 7) == "script(" && line.back() == ')') {
std::string arg = line.substr(7, line.size() - 8);
script(arg);
}
else {
std::cout << "Команда \"" << line << "\" не найдена\n";
}
}
}
По дате
По рейтингу
чезабрето