СТРОКОВЫЙ КАЛЬКУЛЯТОР С++ СО СКОБКАМИ И ФУНКЦИЯМИ #2

  Рет қаралды 8,985

BERENDEI Jr.

BERENDEI Jr.

Күн бұрын

Пікірлер: 20
@BERENDEIJr
@BERENDEIJr 3 жыл бұрын
Лучший VPN-сервис для России/Украины: bit.ly/3jxdhg6 🔥ПРОМОКОД НА СКИДКУ 20%: vpn20
@alexselvin9882
@alexselvin9882 6 ай бұрын
У тебя классные видосы по программированию! Мужик, вернись с новыми видосами!!!
@BERENDEIJr
@BERENDEIJr 6 ай бұрын
Когда-нибудь обязательно вернусь, думаю об этом часто...
@96cmPWNZ
@96cmPWNZ Жыл бұрын
Это божественно! Всё понятно и круто реализовано - компактно
@boryaKLD
@boryaKLD 2 жыл бұрын
в коде ошибка не читал пока комментов (-2+3)+(-6*3) не сработает надо когда мы писали правила для скобки поставить флаг=1 тогда заработает if (box=='('){ objeckt.tip_char = box; objeckt.tip_double = '0'; stack_operation.push(objeckt); cin.ignore(); flag=1; continue; } спасибо большое за видео, без него бы не разобрался
@niagarajeen
@niagarajeen 3 жыл бұрын
Ого так быстро вторая часть! Круто) Теперь я умею прогать калькулятор с 4мя действиями Ты заинтересовал меня и я стал изучать с++;)0 Красавчик бро) А ещё будут подобного рода ролики? Или когда будут моды?
@BERENDEIJr
@BERENDEIJr 3 жыл бұрын
Спасибо!) Рад, что Вы заинтересовались С++ ;)
@НикольШейн-к4е
@НикольШейн-к4е 3 жыл бұрын
C унарным минусом можно разобраться значительно проще. если "-" стоит в начале формулы(первый символ), то заменяем его "0-". если в формуле встречается последовательность "(-", то ее заменяем на "(0-". В нынешнем виде представленный строковый калькулятор не правильно обрабатывает унарный мину в скобках правильным образом(насколько помню в 3 части автор это не исправил) например: 3*(-2+3) = 4. метод костыльный, но работающий, проверил в своей работе.
@BERENDEIJr
@BERENDEIJr 3 жыл бұрын
Неплохая идея! Но и в нынешней реализации все работает корректно, в 3й части все исправлено. Прямо сейчас ради интереса забил в калькулятор ваш пример, получил ответ 3.
@НикольШейн-к4е
@НикольШейн-к4е 3 жыл бұрын
@@BERENDEIJr может у меня не сработала потому что меня создан отдельный класс строкового калькулятора с методом public double Calc(string formula) в таком случае алгоритм разбиения формулы на числа и операции совсем иначе выглядет. делал точь в точь как у вас только на C# и еще не обрабатовало множественные скобки с права ))) например (((1))) = ошибочка тогда стоили просто все ")" заменить на ")+0) (((1))) => (((1)+0)+0) = 1 (работало корректно)
@НикольШейн-к4е
@НикольШейн-к4е 3 жыл бұрын
чтобы в конструкции switch/case, не описывать все для каждой функции область определения( значения аргумента который может обрабатывать функция) можно вынести проверку за конструкцию. double right = Stack_n.Pop().value; double left; string op = Stack_o.Pop().type; double value ; switch (op) { case "+": left = Stack_n.Pop().value; value = left + right; break; case "-": left = Stack_n.Pop().value; value = left - right; break; case "*": left = Stack_n.Pop().value; value = left * right; break; case "/": left = Stack_n.Pop().value; value = left / right; break; case "^": left = Stack_n.Pop().value; value = Math.Pow(left , right); break; case "%": left = Stack_n.Pop().value; value = left % right; break; case "cos": value = Math.Cos(right); break; case "sin": value = Math.Sin(right); break; case "sqrt": value = Math.Sqrt(right); break; case "exp": value = Math.Exp(right); break; case "abs": value = Math.Abs(right); break; case "acos": value = Math.Acos(right); break; case "asin": value = Math.Asin(right); break; ... default: return $"не сущществует функции \"{op}\" в данном контексте "; throw new Exception(); return false; } if (!IsNumeric(value)) { return $"аргумент({right}) функции \"{op}\" выходит за пределы области определения функции"; throw new Exception(); } else { lec.type = "0"; lec.value = value; Stack_n.Push(lec); } return true; } но тогда необходима функция IsNum, является ли значение числом, а не например "inf" или null тогда добавление новых функций будет лишь требовать формулы ее вычесления
@mishalavrik3683
@mishalavrik3683 3 жыл бұрын
сколько времени нужно чтоб иметь такой уровень знаний ?
@BERENDEIJr
@BERENDEIJr 3 жыл бұрын
Меньше полугода
@ВероНика-у6с3ы
@ВероНика-у6с3ы 2 жыл бұрын
@@BERENDEIJr У нас похожее задание (только еще и на qt) на первом курсе в начале 2го семестра. Думаю, если полотно заниматься только прогой, то месяца 2 достаточно)
@high-level-content-maker
@high-level-content-maker Жыл бұрын
@@BERENDEIJr месяц-полтора задротства (с нуля, если действительно интересно программирование), куда сложнее додуматься как реализовать сам calculating, тут уже мозги надо
@ofgrcmusic
@ofgrcmusic 3 жыл бұрын
18:17
@АнтонСергеев-б4с
@АнтонСергеев-б4с 3 жыл бұрын
Что за трек? :D
@BERENDEIJr
@BERENDEIJr 3 жыл бұрын
Вначале играет Lupus Nocte - "Midnight Safari". Затем NTO - "Trauma Worakls Remix"
@АнтонСергеев-б4с
@АнтонСергеев-б4с 3 жыл бұрын
@@BERENDEIJr Спасибо большое! А будет ли реализовано использование переменных в формулах?)
@BERENDEIJr
@BERENDEIJr 3 жыл бұрын
@@АнтонСергеев-б4с В данной реализации это сделать очень трудно... Надо переделывать всю логику обработки данных... Чтобы программа не работала с символами по очереди, а сразу принимала всю строку
🕊️Valera🕊️
00:34
DO$HIK
Рет қаралды 12 МЛН
This dad wins Halloween! 🎃💀
01:00
Justin Flom
Рет қаралды 12 МЛН
Декораторы [008]
41:36
LINE
Рет қаралды 692
Как сменить айпи адрес за 5 секунд на телефоне.
1:56
Вера Ковалева. Сетевой без заморочек. Лидер в SW.
Рет қаралды 51 М.