Кольцова
?>

В среде программирования Паскаль решить задачи: Найти сумму элементов матрицы, лежащих выше главной диагонали и разность элементов, лежащих ниже побочной диагонали. Квадратную матрицу заполнить случайными числами из диапазона [-9;9].

Информатика

Ответы

vetviptime

Принцип работы рекурсивный

Объяснение:

# В комментариях я использовал слово итерация в значении запуска новой функции с данными spos/ppos большими на 1 (аналогично с циклом for

# Ввод данных

s = input("Слово: ")

p = input("Шаблон: ")

# match возвращает True, если подстрока s, начинающаяся с позиции spos,

# соответствует шаблону (подстрока p, которая начинается

# с позиции ppos)

def match(spos, ppos):

   if (spos == len(s)) or (ppos == len(p)):

       return (spos == len(s) and ppos == len(p)) #когда все символы слова либо шаблона пройдены возвращается True, если и шаблон и слово пройдены полностью, в другом случае возвращается False

   elif p[ppos] == '?':

       return match(spos + 1, ppos + 1) #когда встречается ? начинается новая итерация

   elif p[ppos] == '*': #проверка если подстрока - *

       for i in range(spos, len(s)): #обход всех оставшихся символов слова

           if match(i, ppos + 1):

               return True #если дочерняя функция (вызванная выше) выдала True, цикл for заканчивается до выдавая True

   else: #выполняется когда не встретилось */?

       return (s[spos] == p[ppos]) and (match(spos + 1, ppos + 1))# проверка на равентсво соответствующих (по индексу) символов слова и шаблона и запуск новой функции (итерации)

if match(0, 0):

   print('YES') #если результат функции True в консоль выводится 'YES', иначе 'NO'

else:

   print('NO')

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

В среде программирования Паскаль решить задачи: Найти сумму элементов матрицы, лежащих выше главной диагонали и разность элементов, лежащих ниже побочной диагонали. Квадратную матрицу заполнить случайными числами из диапазона [-9;9].
Ваше имя (никнейм)*
Email*
Комментарий*