SHA_bash
@SHA_bash

Как указать степень при вводе?

Всем привет!
Прошу пользователя ввести значение,
но это значение с возведением в степень (например: 10^-23).
Следовательно – в каком виде должно быть введено это значение,
чтобы оно успешно записалось в переменную и применялось при дальнейших вычислениях?
  • Вопрос задан
  • 106 просмотров
Решения вопроса 4
Zoominger
@Zoominger
System Engineer
Следовательно – в каком виде должно быть введено это значение,

Варианта два: считать раздельно число и степень или же писать парсер, который будет разбирать строку.
Парсер прост: делаете split() по символу "^", первая часть - число, вторая - степень. Если split() у вас нет (не Qt, например), то ищете вхождение символа "^" и разбиваете вручную, взяв символы до знака и после, преобразовав их впоследствии в число. Также не забывайте проверить, есть ли во второй части строки знак "-" и предпринимайте соответствующие действия над числом, удалив из сроки сам минус.
И если число всегда равно 10, то можно попросить вводить только степень.
Ответ написан
dollar
@dollar
А если пользователь напишет: 2 + 2 * 2?
Придётся писать свой калькулятор, хотя бы для степени. То есть сначала значение записывается в виде строки, а затем с помощью некоего алгоритма можно перевести в число. Конечно, если это вообще возможно, потому что пользователь может ввести какую-нибудь дичь типа 10^Вася, и программа должна на это как-то реагировать.
Ответ написан
Adamos
@Adamos
Вопрос, имхо, не имеет смысла в том виде, в котором задан.
Нужно сформулировать более общую проблему: дать подробности о вводимых данных и способе ввода, а также решаемых целях.
Только тогда можно рассчитывать на вменяемое решение.
Например, если это гуй и постоянно вводятся числа такого порядка, то можно просто добавить переключение единиц "нано-", "пико-" и т.п.
А вот такой парсинг с чисто математическими приведениями скорее приведет к дикой потере точности, которую потом замучишься вылавливать...
Ответ написан
@TheCalligrapher
Ввод плавающих значений поддерживает "научную нотацию". То есть при вводе значения типа double вы можете написать 10e-23. Никакого другого ввода "со степенью" в стандартной библиотеке нет.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы