Ниже подробное решение с объяснениями и примером кода на Python. Задача понятна: вводить цены до тех пор, пока пользователь не введет слово «нет», суммировать все введённые значения и вывести итог.
Пояснение к алгоритму
- Инициализируем сумму как Decimal('0.00') для точности расчётов с валютой.
- В бесконечном цикле запрашиваем ввод пользователя.
- Если введено 'нет' (регистр неважен), выходим из цикла.
- Приводим запрошенное значение к числу: заменяем запятую на точку (на случай, что введено 12,34), пытаемся преобразовать в Decimal.
- При успешном преобразовании добавляем цену к сумме; при ошибке ввода показываем сообщение об ошибке и продолжаем цикл.
- После выхода из цикла печатаем итог с двумя знаками после запятой.
Пример кода (Python 3.x)
from decimal import Decimal, InvalidOperation
def main():
total = Decimal('0.00')
print("Введите цену товара. Введите 'нет' для завершения.")
while True:
s = input("Цена: ").strip()
if s.lower() == 'нет':
break
# поддержка как точек, так и запятых в десятичных дробях
s = s.replace(',', '.')
try:
price = Decimal(s)
except InvalidOperation:
print("Ошибка: введите числовое значение или 'нет' для выхода.")
continue
total += price
print(f"Итого: {total:.2f}")
if __name__ == "__main__":
main()
Пояснения к коду
- Decimal используется для корректного суммирования денежных значений без ошибок округления, которые могут возникнуть при работе с float.
- s.lower() == 'нет' обеспечивает корректное завершение независимо от регистра.
- Замена запятой на точку позволяет воспринимать числа как 12,50 или 12.50.
- При некорректном вводе (например, текст) программа выводит сообщение об ошибке и продолжает работу.
Если нужно доработать под конкретный язык программирования (например, Java, C++, или сделать упрощённую версию на float), скажите — подготовлю варианты.