С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 24.12.2018
Сообщений: 5

Работа с введённой через консоль формулой

11.09.2019, 19:40. Показов 3740. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. У меня есть некая программа, для которой нужно вводить формулу(например X+10), но не могу решить проблему с преобразованием string. вот примерный код:
C++ (Qt)
1
2
3
4
5
6
7
8
int main(){
    int x=10, y;
    string z;
    cin>>z; //ввод формулы (мне нужно ввести например X*2)
    y=atof(z.c_str());  //преобразование введённой формулы
    cout<<y<<endl;  //использование формулы
    return 0;
}
Дело в том, что переменная y должна постоянно обновляться(она стоит в цикле), а формула должна вводится вручную. Я придумал разве что хранить введённую формулу в отдельную переменную string(z). Однако, при преобразовании в int не работает ранее заданная переменная x. Компьютер считает её нулём. Я пытался найти что-то похожее в интернете, но так и не нашёл(возможно плохо искал). Есть ли способ заставить работать уравнение y=x*2, где правая часть введена через консоль(string), а y-int.

P.S.: полная программа состоит почти целиком на расчётах и формулах, но сам принцип я привёл в примере. Думаю, что скидывать её целиком не имеет смысла.
Буду рад всем предложениям. Заранее спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.09.2019, 19:40
Ответы с готовыми решениями:

Работа через консоль
Здравствуйте. Мне нужно скинуть файл с компьютера на сервер, который находится со мной в одной локальной сети. Скинуть файл нужно именно...

Работа с интернетом через консоль
всем здравствуйте, хочу научиться получать данные из интернета в свои консольные приложения. какие подходы для этого используются? например...

Консоль и Qt. Возможность работать как через консоль так и через графический интерфейс
Может кто-то знает... Как в одном и том же приложении совместить возможность запуска и через консоль и через разработанный через Qt...

4
 Аватар для Darkfor
11 / 7 / 4
Регистрация: 25.03.2019
Сообщений: 140
11.09.2019, 22:15
Лучший ответ Сообщение было отмечено ДмитрийБарбашин как решение

Решение

Привет. Проблема не в преобразовании, а в логике программы. Ты не можешь просто взять и выполнить значение переменной как код. Тебе нужно записать значение переменной x отдельно от оператора, через строку или пробел например, а потом значение другого операнда, то-есть 2. Ты также можешь объявить массив типа char и дальше записать туда x*2. Потом в цикле сканировать каждый элемент (искать оператор * и другие). И поставить уже проверку switch, например, если оператор - то присвоить переменной y значение x - 2 например. И так с каждым оператором.
1
0 / 0 / 0
Регистрация: 24.12.2018
Сообщений: 5
12.09.2019, 16:06  [ТС]
Извините, я немного не понимаю. я конечно могу составить массив char['x','*','2'], но только как заставить это заработать не могу понять. Примеры могут быть длиннее (например (0.5*x+1.2)−(3.6−4.5*x)), так что хотелось бы просто найти способ составить уравнение в переменной y целиком, по возможности конечно.
Было бы неплохо, если бы Вы привели рабочий код с X*2, но где уравнение может вводится любое: X-6 или X+3-4
просто я хочу ввести не просто уравнение из трёх символов, а возможно что-то длиннее. и если делать Вашим способом, то сперва придётся написать полноценный калькулятор для скобок и правил, что первым делается умножение(если я правильно понял объяснение). Но нет ли способа по проще? вроде задача небольшая, просто ввести уравнение и найти его значение при определённом значении x, но ради этого придётся писать целый алгоритм калькулятора.
0
 Аватар для COKPOWEHEU
4082 / 2680 / 432
Регистрация: 09.09.2017
Сообщений: 11,900
12.09.2019, 16:25
Лучший ответ Сообщение было отмечено ДмитрийБарбашин как решение

Решение

Цитата Сообщение от ДмитрийБарбашин Посмотреть сообщение
как заставить это заработать не могу понять
Вам же говорят, что в Си штатного способа нет. Надо реализовывать всю обработку формулы руками. Считываете строку, разбиваете на лексемы, строите дерево и так далее. Сразу скажу, что код получится длинным и непростым.
1
 Аватар для Darkfor
11 / 7 / 4
Регистрация: 25.03.2019
Сообщений: 140
13.09.2019, 14:29
Могу скинуть код из моего старого проекта «идеального» калькулятора, если вы не против поломать мозг и понять сам алгоритм. Комментарии добавлю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.09.2019, 14:29
Помогаю со студенческими работами здесь

Работа с вводом через консоль Scanner
добрый день. как человек, только начинающий изучение, буду признателен совету, как правильно реализовать подобие логина через консоль ...

Работа с доступом через консоль WinServ 2008
Доброго времени суток, господа-форумчане. Вопрос следующего характера: Имеется ВинСерв 2008. Имеется необходимость консольно менять...

Работа с консолью диспетчера пакетов NuGet через консоль cmd
Здравствуйте. Подскажите пожалуйста, как реализовать команду update-database с указанием нужного проекта, в консоли cmd, а не через...

Подготовить числа для вывода на консоль через ASCII и вывести на консоль
В регистре eax находится число, которое нужно превратить в ASCII-код и вывести на консоль символы, которые соответствуют полученному. ...

Работа с формулой)
Дано: x, y, z. Вычислить и отпечатать значение Минимальное и максимальные значения также напечатать.


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru