Вопрос задан 24.06.2023 в 01:59. Предмет Информатика. Спрашивает Шагас Артем.

Телефонна компанія «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
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Mihailovich Vladimir.

Без проверок код был бы намного меньше, но сделал с проверками на всякий случай. Если нужно проще - пишите. По сути достаточно функции 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

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Вам потрібно написати програму, яка обчислить платню за користування телефоном для абонента компанії "Phone" з урахуванням заданих умов. Ось Python-програма для вирішення цієї задачі:

python
# Зчитуємо вхідні дані N, A, B, T = map(float, input().split()) # Обчислюємо вартість розмов до A хвилин if N <= A: cost = N * T else: cost = A * T # Обчислюємо вартість розмов від A до B хвилин if N > A and N <= B: cost += (N - A) * T elif N > B: # Вартість розмов понад B хвилин за пільговим тарифом (зі знижкою) cost += (B - A) * T + (N - B) * (T * 0.9) # Виводимо результат з точністю до двох десяткових знаків print(f'{cost:.2f}')

Ця програма спочатку зчитує вхідні дані - кількість хвилин розмови (N), поріг A, поріг B та вартість однієї хвилини розмови (T). Потім обчислює вартість розмови відповідно до ваших вказівок і виводить результат з точністю до двох десяткових знаків.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос