0Artemka0
03.03.2023 17:59

В ДОМЕ ДВЕРЬ, В ДВЕРИ - ЗАМОК
Рассмотри рисунок и впиши пропущенные слова на схеме
СОСТава.
АБРИКОС
КОСТОЧКА​

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
nikitakirillov3
01.04.2020 18:28

Без проверок код был бы намного меньше, но сделал с проверками на всякий случай. Если нужно проще - пишите. По сути достаточно функции 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(0 оценок)
Ответ:
Тарана11лет9456
17.05.2020 12:36

32768

Объяснение:

Данная незамысловатая функция Excel VBA формирует строку, согласно условию.

Function replstr(str As String, n As Integer) As String

Dim a(1 To 3), b(1 To 3) As String, i, j As Integer

a(1) = "A": a(2) = "B": a(3) = "AB"

b(1) = "AB": b(2) = "AB": b(3) = "A"

For i = 1 To n

j = (i - 1) Mod 3 + 1

str = Replace(str, a(j), b(j))

Next

replstr = str

End Function

Аргументы функции:

1) Исходная строка (а данном случае “AA”)

2) Число операций с исходной строкой

Значение первых 13 операций:

=replstr("AA";1) ABAB

=replstr("AA";2) AABAAB

=replstr("AA";3)

=replstr("AA";4) ABABABAB

=replstr("AA";5) AABAABAABAAB

=replstr("AA";6)

=replstr("AA";7) ABABABABABABABAB

=replstr("AA";8) AABAABAABAABAABAABAABAAB

=replstr("AA";9)

=replstr("AA";10)

=replstr("AA";11)

=replstr("AA";12)

=replstr("AA";13)

Для подсчета символов “A” в строке, используем еще одну функцию:

Function chrcount(str1 As String, str2 As String) As Integer

Dim str() As String

str = Split(str1, str2)

chrcount = UBound(str, 1)

End Function

Аргументы функции:

1) Cтрока

2) Символ (последовательность символов), число которых требуется найти

Например, результатом использования функции =chrcount(replstr("AA";20);"A") в ячейке Excel будет число 256

Используя описанные функции, посчитаем символы “A”в первых 13 строках

Номер операции (i) Число символов “A” в строке

1    2

2    4

3    4

4    4

5    8

6    8

7    8

8    16

9    16

10    16

11    32

12    32

13    32

Как видно из таблицы, число символов в строке образует числовую последовательность 2^1;  2^2; 2^2; 2^2; 2^3; 2^3; 2^3; … 2^([(i-2)/3]+2)

Таким образом, мы получили формулу для вычисления числа символов “A”в строке по номеру операции.

Соответственно, 2^([(43-2)/3]+2) = 32768

0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота