Вопрос задан 13.07.2023 в 20:27. Предмет Информатика. Спрашивает Крамчанинов Родион.

Миша готовится к ЕГЭ по информатике. Сейчас он изучает задачу A4, в которой описывается работа с

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

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

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

Ответ:

На питоне

Объяснение:

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');

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

Для решения этой задачи на Python можно написать следующий код:

python
def 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" в противном случае.

0 0

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

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

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

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