Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
9 Вариант / Курсовой ТП Костомаров ЕА ЗБСТ 1852.docx
Скачиваний:
8
Добавлен:
09.02.2022
Размер:
52.75 Кб
Скачать

B9. Q: сумма цифр числа равна 10. T: число является четным.

from random import randint

# Состояние Q

def Qbehavior(number):

string_number = str(number)

sum = 0

for char in string_number:

if char != "-":

sum += int(char)

return sum == 10

# Состояние T

def Tbehavior(number):

return number % 2 == 0

# • итеративная функция, вычисляющая количество элементов массива, обладающих свойством Q;

def iteratCountQ(array):

count = 0

for number in array :

if Qbehavior(number) == True:

count += 1

return count

# • рекурсивная функция, вычисляющая количество элементов массива, обладающих свойством Q;

def recurseCountQ(array, array_pointer=0,count=0):

if len(array) == array_pointer:

return count

else:

if Qbehavior(array[array_pointer]) == True:

count += 1

array_pointer += 1

return recurseCountQ(array, array_pointer, count)

# • итеративная функция, вычисляющая сумму элементов массива, обладающих свойством T;

def iteratSumT(array):

sum = 0

for number in array:

if Tbehavior(number) == True:

sum += number

return sum

# • рекурсивная функция, вычисляющая сумму элементов массива, обладающих свойством T;

def recurseSumT(array, array_pointer=0, sum=0):

if len(array) == array_pointer:

return sum

else:

if Tbehavior(array[array_pointer]) == True:

sum += array[array_pointer]

array_pointer += 1

return recurseSumT(array, array_pointer, sum)

# • итеративная логическая функция, проверяющая, обладает ли хотя бы один элемент массива свойством Q;

def iteratAtLeastOneQ(array):

for number in array :

if Qbehavior(number) == True:

return True

return False

# • рекурсивная логическая функция, проверяющая, обладает ли хотя бы один элемент массива свойством Q;

def recurseAtLeastOneQ(array, array_pointer=0):

if len(array) == array_pointer:

return False

else:

if Qbehavior(array[array_pointer]) == True:

return True

array_pointer += 1

return recurseAtLeastOneQ(array, array_pointer)

# • итеративная логическая функция, проверяющая, все ли элементы массива a обладают свойством T;

def iteratEveryT(array):

t_behavior_count = 0

for number in array :

if Tbehavior(number) == True:

t_behavior_count += 1

return len(array) == t_behavior_count

# • рекурсивная логическая функция, проверяющая, все ли элементы массива a обладают свойством T.

def recurseEveryT(array, array_pointer=0, t_behavior_count=0):

if len(array) == array_pointer:

return len(array) == t_behavior_count

else:

if Tbehavior(array[array_pointer]) == True:

t_behavior_count += 1

array_pointer += 1

return recurseEveryT(array, array_pointer, t_behavior_count)

# Инициализация массива

def init_array(n, a, b):

return [randint(a, b) for _ in range(n)]

n = 30

a, b = -999,999

# инициализация элементов массива случайными числами от а до b в количестве n

array = [randint(a, b) for _ in range(n)]

print("B9. Q: сумма цифр числа равна 10. T: число является четным.")

print("Элементы массива: \n", array)

print("Итеративная функция, количество элементов массива, обладающих свойством Q: ", iteratCountQ(array))

print("Рекурсивная функция, количество элементов массива, обладающих свойством Q: ", recurseCountQ(array))

print("Итеративная функция, сумма элементов массива,обладающих свойством T: ", iteratSumT(array))

print("Рекурсивная функция, сумма элементов массива,обладающих свойством T: ", recurseSumT(array))

print("Итеративная логическая функция, обладает ли хотя бы один элемент массива свойством Q: ", iteratAtLeastOneQ(array))

print("Рекурсивная логическая функция, обладает ли хотя бы один элемент массива свойством Q: ", recurseAtLeastOneQ(array))

print("Итеративная логическая функция, все ли элементы массива a обладают свойством T: ", iteratEveryT(array))

print("Рекурсивная логическая функция, все ли элементы массива a обладают свойством T: ", recurseEveryT(array))