profile
Размещено 4 года назад по предмету Информатика от severussnage

Телефонна компанія «Phone» для заохочення абонентів ввела наступні правила щодо оплати послуг зв’язку: за розмови до A хвилин за місяць необхідно сплачувати за підвищеним тарифом T грн/хв, який є більшим за встановлений тариф на 10 відсотків. Якщо абонент розмовляв за місяць менше ніж В хвилин (B > A), то він сплачує послугу за встановленим тарифом. Абоненти, які витратили на розмови більше ніж B хвилин, за хвилини, що перевищили В, сплачують за пільговим тарифом, який на 10 відсотків менший за встановлений.
Необхідно написати програму, яка обчислює платню за користування телефоном абонента компанії «Phone» для розмов обсягом N хвилин за місяць.

Input format
Програма отримує на вхід три цілих числа N, A, B (N ≥ 0, A ≥ 0) та одне дійсне число T, (T > 0), які записані в один рядок. Розділювачем слугує пробіл.

Output format
Програма має вивести значення платні в гривнях за користування телефоном абонента компанії «Phone» як дійсне число з точністю до двох десяткових знаків.

Examples
Input
1 5 10 15
Output
15.00
Input
6 3 9 10
Output
54.55
Input
9 2 5 3
Output
23.45

  1. Ответ на вопрос
    Ответ на вопрос дан pinguinbird

    Без проверок код был бы намного меньше, но сделал с проверками на всякий случай. Если нужно проще - пишите. По сути достаточно функции calculate_cost. И я ещё другую функцию сделал calculate_cost_old, она не используется, но в ней дифференцированный подход вычислений используется, то есть до нижней границы вычисляется по ставке 1,1, дальше вычисляется по тарифу, а больше верхней границы по тарифу 0,9. Мне кажется, так логичнее:

    def calculate_cost(N:int,A:int,B:int,T:float):

       s = 0

       if N <= A: s = 1.1*N

       elif A < N <= B: s = N

       else: s = 0.9*N

       return round(T*s,2)

    def calculate_cost_old(N:int,A:int,B:int,T:float):

       """Данная функция вычисляет стоимость услуг и возвращает значение"""

       s1 = 0

       s2 = 0

       s3 = 0

       # вычислим стоимость до нижней границы включительно

       if N <= A: s1 = 1.1*N

       else: s1 = 1.1*A

       # вычислим стоимость между нижней (исключительно) и верхней (включительно) границами

       if A < N <= B: s2 = N-A

       elif N > B: s2 = B-A

       # вычислим стоимость от верхней границы (исключительно)

       if N > B: s3 = 0.9*(N-B)

       

       return round(T*(s1+s2+s3),2)

    def calculator():

       """основная функция"""

       names = ['Количество минут', 'Нижняя граница тарифа', 'Верхняя граница тарифа', 'Стоимость тарифа']

       while True:

           chk = True

           a = list(map(str, input('Начните ввод: ').split()))

           if len(a) != 4:

               print('Ошибка ввода: введите четыре параметра через пробел')

               continue

           for i in range(len(a)):

               if i != 3:

                   try:

                       a[i] = int(a[i])

                       if a[i] < 0: raise ValueError

                       if i == 2 and a[i-1] > a[i]: raise ValueError

                   except ValueError:

                       print(f'Ошибка ввода: значение "{names[i]}" ({i+1}-й параметр) должно быть целым не отрицательным числом', '> нижней границы' if i == 2 else '')

                       chk = False

               else:

                   try:

                       a[i] = float(a[i])

                       if a[i] <= 0: raise ValueError

                   except ValueError:

                       print(f'Ошибка ввода: значение "{names[i]}" ({i+1}-й параметр) должно быть целым положительным числом')

                       chk = False

           if chk: break

       print()

       print('--- Рассчёт окончен ---')

       print('Стоимость учлуг составляет: {:.2f}'.format(calculate_cost(a[0],a[1],a[2],a[3])))

       print()

    print('--- Рассчёт стоимости услуг связи ---')

    print()

    print('Введите через пробел: n  - количество потраченных за месяц минут (целое число >= 0)n  - нижнюю границу тарифа (целое число >= 0)n  - верхнюю границу тарифа (целое число >= нижней границы)n  - стоимость (вещественное число > 0)')

    print()

    while True:

       calculator()

       if input('Повторить вычисления? (y/n): ') == 'n': break

Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 6 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.