Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/35: Рейтинг темы: голосов - 35, средняя оценка - 4.86
3 / 3 / 0
Регистрация: 18.11.2017
Сообщений: 26

Сделать калькулятор арифметического выражения

30.04.2020, 11:11. Показов 7773. Ответов 35

Вот такое мне дали задание:
Написать подпрограмму–функцию Form(S, X, Y), где S – строка, Х и Y
– вещественные переменные. В строке записано арифметическое выражение,
содержащее переменные Х и Y, константы (целые или вещественные),
операции +, -, *, /. Порядок операций определен скобками. Подпрограмма–
функция возвращает значение арифметического выражения при заданных
значениях Х и Y

Совершенно не понимаю, как эту строку преобразовать в арифметическое выражение для крестов и как посчитать. А ещё я ненавижу свою жизнь, хотя поводы для этого пустяковые.
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.04.2020, 11:11
Ответы с готовыми решениями:

Расчет арифметического выражения
Помогите с формулой не могу понять

Вычисление арифметического выражения
1. Рассчитать арифметическое выражение: а=(x^2-ху)/(0,7Sinln|x|) при x=45,892, y=0,601.

Чтение арифметического выражения из файла
Доброго времени суток. Столкнулся с проблемой. Задача состоит в том, чтобы программа читала из файла стоку вида: число, выражение(+,-,*,/),...

35
 Аватар для freevoyajer
20 / 21 / 2
Регистрация: 09.04.2020
Сообщений: 125
03.05.2020, 17:10
Цитата Сообщение от XLAT Посмотреть сообщение
Почему не помогаете, а учите тех, кто пытается помогать?
Еще раз повторяю для тех кто в танке. Я считаю ваш выпад необоснованным. Вы можете обосновать свои высказывания?
Цитата Сообщение от XLAT Посмотреть сообщение
где ваш код, где оно идёт?
Речь идет об алгоритме. Перестаньте поясничать и ведите себя достойно. Вы высмеяли собседника. Не я, а вы. Поэтому сначала вы обоснуйте. Завершив этот этап мы спокойно можем перейти дальше и уже обсуждать эффективность отдельно взятых алгоритмов. на примерах с исходниками. Я полагаю вам как специалисту не имеет значения ЯП реализации? Или же это особо критично с намеком на синдром утенка?
0
Just Do It!
 Аватар для XLAT
4219 / 2679 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
03.05.2020, 18:02
Цитата Сообщение от freevoyajer Посмотреть сообщение
Еще раз повторяю для тех кто в танке. Я считаю ваш выпад необоснованным. Вы можете обосновать свои высказывания?
мой вывод обоснован двумя калькуляторами в этой теме.

а чем обоснован ваш выпад?

Не по теме:

Цитата Сообщение от freevoyajer Посмотреть сообщение
Или же это особо критично с намеком на синдром утенка?
пытаетесь затроллить?
батенька, вы даже представить себе никогда не сможете, какой у меня арсенал есть в бетонном ангаре.
:rofl:

0
 Аватар для freevoyajer
20 / 21 / 2
Регистрация: 09.04.2020
Сообщений: 125
03.05.2020, 18:04
Цитата Сообщение от XLAT Посмотреть сообщение
а чем обоснован ваш выпад?
Где вы видели с моей стороны что-то подобное? Я же вас просил:
Цитата Сообщение от freevoyajer Посмотреть сообщение
Перестаньте поясничать и ведите себя достойно.
хватит фантазировать.
Цитата Сообщение от XLAT Посмотреть сообщение
мой вывод обоснован двумя калькуляторами в этой теме.
Короче вы не собираетесь объяснить ни мне, ни другим почему вы высмеяли собеседника за то что он предложил воспользоваться алгоритомом ОПН. Я првильно вас понимаю?

Добавлено через 1 минуту
Цитата Сообщение от XLAT Посмотреть сообщение
пытаетесь затроллить?
Ни в коем случае. Уточнил, да и только.
0
Just Do It!
 Аватар для XLAT
4219 / 2679 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
03.05.2020, 18:13
Цитата Сообщение от freevoyajer Посмотреть сообщение
Ни в коем случае. Уточнил, да и только.
Я ВАС ПОПРОСИЛ ПОКАЗАТЬ ЗДЕСЬ СВОЙ ВАРИАНТ, ЭФФЕКТИВНОГО, КАК ВЫ СЧИТАЕТЕ, КАЛЬКУЛЯТОРА.
Вы же, в ответ про свой сидром...
Кликните здесь для просмотра всего текста

Не по теме:

Если у вас ничего нет, так уже надо было об этом прямо сказать,
ну,
и тогда, о чём можно с вами беседовать? О вашем сидроме?

Ок, создайте тему в разделе психология, мож вас спецы и подлечат там.



Прекращайте оффтопить!!!
0
 Аватар для freevoyajer
20 / 21 / 2
Регистрация: 09.04.2020
Сообщений: 125
03.05.2020, 18:30
XLAT, так бы сразу и сказали: я, мол, плевать хотел на всех вас и не собираюсь вам ничего объяснять, потому что я балабол и т.д. и т.п. Ок, у меня больше вопросов к вам нет. Раз вы не в состоянии обосновать свои слова то глупо воспринимать вас как адекватного собеседника.

Добавлено через 3 минуты
Это все мои вопросы, на который вы не дали ответа. По сути всё это один и тот же вопрос. Чего вы ждете от меня когда плюете на меня оставляя мои вопросы без ответа? Сначала ответьте, а потом и требуйте ответ от меня. Я как бы даже и не против, и не возражал.
Цитата Сообщение от freevoyajer Посмотреть сообщение
В чем проблема?
Цитата Сообщение от freevoyajer Посмотреть сообщение
Также отвергая предложение вы, очевидно, должны сослаться на более эффективные на ваш взгляд альтернативы.
Цитата Сообщение от freevoyajer Посмотреть сообщение
Моя просьба к вам обосновать подобный выпад вполне естественна. Так вы обоснуете или нет?
Цитата Сообщение от freevoyajer Посмотреть сообщение
Короче вы не собираетесь объяснить ни мне, ни другим почему вы высмеяли собеседника за то что он предложил воспользоваться алгоритомом ОПН. Я првильно вас понимаю?
Добавлено через 8 минут
XLAT, то есть вместо того чтобы обосновать свои слова вы минусуете репу и называете меня словами "очень жирный троль". Что ж, что и требовалось доказать: чрезмерное ЧСВ уровня Бг, а по факту руки-крюки. /facepalm
0
Just Do It!
 Аватар для XLAT
4219 / 2679 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
03.05.2020, 18:35
Цитата Сообщение от freevoyajer Посмотреть сообщение
вы минусуете репу
мой долг пометить вас,
и заметьте я это сделал очень и очень нежно

если же вы всё же покажите код или как то по своему, но очевидно для всех, обоснуете, почему пн не гуано,
то обещаю два плюса.
0
03.05.2020, 18:37

Не по теме:

Цитата Сообщение от XLAT Посмотреть сообщение
и заметьте я это сделал очень и очень нежно
Глупо было бы думать что это важно для меня. Впрочем, я заметил что глупость для вас в приоритетах.

0
Just Do It!
 Аватар для XLAT
4219 / 2679 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
03.05.2020, 18:41
Цитата Сообщение от freevoyajer Посмотреть сообщение
руки-крюки
у меня лапки
0
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,303
05.05.2020, 07:41
Цитата Сообщение от XLAT Посмотреть сообщение
если же вы всё же покажите код или как то по своему
Почему я должен выкладывать свой код? Я не собираюсь решать за ТС его задачу. Я точно так же не знал как это делается, сперва попробовал написать что-то своё, потом понял что получается лажа. Поискал в сети, что такое ОПН и как делается - там достаточно информации по теме.
0
Just Do It!
 Аватар для XLAT
4219 / 2679 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
05.05.2020, 09:26
Цитата Сообщение от alexu_007 Посмотреть сообщение
Почему я должен выкладывать свой код?
вас это не касается: отдыхайте спокойно.
0
3 / 3 / 0
Регистрация: 18.11.2017
Сообщений: 26
14.05.2020, 21:06  [ТС]
Здравствуйте! Мне сейчас препод дала задание словесно описать решение этой задачи, а я в ней ничего не понимаю...
Начал разбираться из метода go,
С помощью my.set(str); мы загоняем строку в дек, а дальше непонятно...
res = expr();
Что это за expr, откуда он берётся....
Помогите пожалуйста, она прочухала, что я не сам писал

Добавлено через 7 минут
а, пардон, откуда берётся понятно, я его в самом начале объявление искал

Добавлено через 6 минут
Но всё равно не понятно откуда после фигурной скобки в конце берётся "my" Что это?

C++
1
2
3
4
5
6
7
8
private:
deque<char> d;
void info()
{ for(size_t i = 0; i < d.size(); i++)
cout « d[i];
cout « "\n";
}
} my;
0
Just Do It!
 Аватар для XLAT
4219 / 2679 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
14.05.2020, 21:36
Цитата Сообщение от DeveloperS73 Посмотреть сообщение
откуда после фигурной скобки в конце берётся "my" Что это?
а если так:
C++
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
        class  smycin
        {   
        public:
            void set(const std::string& s)
            {   for(const auto& e : s)
                {   d.push_back(e);
                }
                //info();
            }
 
            void putback(char c)
            {   d.push_front(c);
            }
            
            char get()
            {   char c = d.front();
                d.pop_front();
                return c;
            }
 
        private:
            std::deque<char> d;
            void info()
            {   for(size_t i = 0; i < d.size(); i++)
                    std::cout << d[i];
                std::cout << "\n";
            }
        };
        ///--------------------------|
        /// Объект my класса smycin  |
        ///--------------------------:
        smycin my;
так будет понятнее?
1
3 / 3 / 0
Регистрация: 18.11.2017
Сообщений: 26
14.05.2020, 23:48  [ТС]
Ааа, это мы создаём объект класса smycin
не знал, что так можно
1
Just Do It!
 Аватар для XLAT
4219 / 2679 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
14.05.2020, 23:56
дек можно легко заменить на стринг:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
///#include <deque>
#include <string>
...
 
        class  smycin
        {   
        public:
            void set(const std::string& s)
            {   d = s;
                for(size_t i = 0; i < d.size()/2; i++)
                {   std::swap(d[i], d[d.size() - i - 1]);
                }
            }
 
            void putback(char c)
            {   d.push_back(c);
            }
            
            char get()
            {   if(d.empty()) return 0;
                char c = d.back();
                d.pop_back();
                return c;
            }
 
        private:
            std::string d;
        } my;
 
...
1
3 / 3 / 0
Регистрация: 18.11.2017
Сообщений: 26
17.05.2020, 10:51  [ТС]
В общем отправил преподу описание функций, а она сказала, что я идиот, код не мой, а я его украсть нормально не могу. Так оно и есть, с этим не поспоришь, но всё-таки, что я написал не так?:

"Суть моего решения данной задачи заключается в следующем: Все символы строки по очереди поместить в дек, с помощью специальных функций, определять, чем этот первый символ является - скобкой, арифметическим знаком, или числом, и в соответствии с его значением совершает соответствующее действие.

Собственно, чтобы было яснее и понятнее, представлю сами функции и их словесное описание:

Вспомогательные функции:

- void set с помощью фора и метода push_back посимвольно заполняет наш дек

На вход получает ссылку на строку s, с помощью фора и переменной счётчика заполняет дек d

- char get возвращает первый элемент дека в переменную c и удаляет его в самом деке, с помощью методов front и pop_front

- void putback возвращает значение переменной c в начало дека с помощью метода pop_front (эта функция нужна на случай, если после проверки символа "вырванного" с помощью функции get, его нужно "вернуть на место"

Основные функции:

- float expr будет осуществлять сложение и умножение:

с помощью оператора switch, который находится в бесконечном форе for(; определяет, какое действие нужно сделать - сложение или вычитание, получив первый символ из дека. Здесь нужно отметить, что перед свитчем функция expr обращается к функции factor, поэтому дек является уже отредактированным.

А что же происходит в функции factor?

- float factor с помощью функции get получает первый элемент дека, и определяет, является ли он делением или умножением, но перед проверкой обращается к функции skobki

- float skobki с помощью функции get определяет, является ли первый символ скобкой, если да, то переходит к функции expr, если нет, то с помощью функции putback возвращает первый символ в начало дека и переходит к функции number

- float number, собственно тоже получает с помощью функции get первый символ, и если он является числом, то умножает переменную res на 10 и прибавляет к ней это число (изначально переменная res равна 0), то есть по сути эта функция собирает число по числам. Если же символ не равен числу, то с помощью функции putback символ возвращается обратно в первое место дека.

Далее процесс переходит к функции skobki, которая изначально обращалась к функции number, функция скобки, в свою же очередь возвращает значение x (а x присваивается значение функции expr)"
0
Just Do It!
 Аватар для XLAT
4219 / 2679 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
17.05.2020, 11:28
Цитата Сообщение от DeveloperS73 Посмотреть сообщение
а она сказала, что я идиот
вы ковыряли в носу или беспричинно улыбались?

1. также возможно она намекала вам на что-то, а вы буркнули невпопад:
2. также возможно вы забыли сделать ей приятный комплимент или спросить о здоровье,
3. также не лишне было узнать у неё: любит ли она горные курорты и кататься на лыжах?

что бы сдать на отлично вам нужно было сделать постобработку кода, слега его обфусцировать:
1. Дать экзотические имена для идентификаторов блеснув оригинальностью.
2. Логически-эквивалентно переставить операторы максимально запутав код при сохранении его работоспособности.
3. Отформатировать его так, чтобы глаза или разбегались по переферии или собирались в кучу.
4. А вслух минимум три раз упоминуть про рекурсию внутри скобок.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.05.2020, 11:28

Вычислить значение арифметического выражения
5...Требуется вычислить значение арифметического выражения. Выражение записано без пробелов в следующем формате: AxB где A и B...

Вычисление арифметического выражения по формуле
Учитывая значения переменных, вычислить арифметическое выражение по формуле. Алгоритм решения задачи представить в виде блок-схемы.

Вычислить значение арифметического выражения
Строка символов состоит из десятичных цифр разделенных знаками сложения и вычитания. Вычислить значение арифметического выражения, а...

Проверить правильность арифметического выражения
С++ Проверить правильность арифметического выражения, состоящего из числовых констант, знаков арифметических действий и скобок () и .

Вычисления значения арифметического выражения на C++
Помогите, пожалуйста, создать приложение для вычисления значения арифметического выражения, которое может включать в себя действительные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Новые блоги и статьи
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru