
Миша готовится к ЕГЭ по информатике. Сейчас он изучает задачу A4, в которой описывается работа с
масками файлов: Для групповых операций с файлами используются маски имён файлов. Маска представляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов, в которой также могут встречаться следующие символы.Символ «?» (вопросительный знак) означает ровно один произвольный символ.Символ «*» (звёздочка) означает любую последовательность символов произвольной длины, в том числе «*» может задавать и пустую последовательность.Поскольку открытого банка задач для ЕГЭ по информатике не существует, Мише приходится тренироваться самостоятельно. Напишите программу, которая для каждого имени файла определит, подходит ли оно под заданную маску, чтобы Миша мог сверить свои ответы. Гарантируется, что в маске файла присутствует не более одного символа «*».Входные данныеВ первой строке содержится маска файла. В следующих 5 строках содержатся имена файлов по одному в строке. Имена файлов состоят из маленьких латинских букв, цифр и символа «.» (точка), в маске также могут содержаться символы «?» и «*» (символ «*» — не более одного раза). Длина каждой строки не превосходит 20 символов.Выходные данныеДля каждого имени файла выведите слово «YES», если оно удовлетворяет маске и «NO» иначе. Выводить слова следует большими латинскими буквами без кавычек, каждое в новой строке.Входные данныеПомогите решить пж на с++ или python

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

Ответ:
На питоне
Объяснение:
s = input();
for p in range(5):
a = input();
n = 1;
q = 0;
i = 0;
f = 1;
while q < len(s) and i < len(a) and f and n:
if s[q] == '?':
i += 1;
q += 1;
elif s[q] == '*':
n = 0;
else:
if s[q] != a[i]:
f = 0;
i += 1;
q += 1;
if n == 0:
for w in range(-1, -(len(s) - q), -1):
if s[w] != a[w] and s[w] != '?':
f = 0;
break;
if f == 0:
print('NO');
elif '*' not in s and len(a) != len(s):
print('NO');
else:
if (len(s)>len(a)+1):
print("NO");
else:
print('YES');



Для решения этой задачи на Python можно написать следующий код:
pythondef matches_mask(mask, file_name):
if mask == file_name:
return True
if '?' in mask:
if len(mask) != len(file_name):
return False
for i in range(len(mask)):
if mask[i] != '?' and mask[i] != file_name[i]:
return False
return True
if '*' in mask:
prefix, suffix = mask.split('*')
if not file_name.startswith(prefix) or not file_name.endswith(suffix):
return False
if prefix == suffix and prefix == '':
return True
if len(file_name) < len(prefix) + len(suffix):
return False
middle = file_name[len(prefix):-len(suffix)]
return middle.find('.') == -1
return False
def main():
mask = input().strip()
for _ in range(5):
file_name = input().strip()
if matches_mask(mask, file_name):
print("YES")
else:
print("NO")
if __name__ == "__main__":
main()
Вы можете скопировать этот код в среду разработки Python (например, PyCharm, Jupyter Notebook, VS Code с расширением Python и т.д.) и выполнить его. Программа запросит у вас ввод маски файла и пяти имен файлов, а затем выведет результаты - "YES", если имя файла подходит под маску, или "NO" в противном случае.


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







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili