М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
тина136
тина136
07.11.2021 03:27 •  Информатика

Информатика - : составить программу, в которой с клавиатуры вводятся два текстовых выражения. необходимо: 1) выбрать и вывести на экран более длинное из них 2) проверить и вывести на экран то из них, у которого первая и вторая буквы - одинаковая (регистр букв можно не учитывать) 3) проверить, входит ли короткое слово в состав длинного 4) вставить в короткое слово на чётные позиции буквы "а" дополнительно к тому, что есть 5) подсчитать суммы кодов символов, использованных в длинном слове

👇
Ответ:
Xonus
Xonus
07.11.2021
// PascalABC.NET 3.2, сборка 1407 от 18.03.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var s1:=ReadlnString('Первое слово:');
  var s2:=ReadlnString('Второе слово:');
  // #1
  Writeln('Задание 1) ',s1.Length>s2.Length?s1:s2);
  // #2
  if s1[1]=s1[2] then Writeln('Задание 2) ',s1);
  if s2[1]=s2[2] then Writeln('Задание 2) ',s2);
  // #3
  Write('Задание 3) Более короткое слово ');
  // предполагаем, что s1 более короткое.
  // Если это не так, меняем их местами.
  if s1.Length>s2.Length then Swap(s1,s2);
  if pos(s1,s2)=0 then Write('не');
  Writeln(' входит в более длиное');
  // #4
  s1:=s1.ToCharArray.Select((c,i)->i mod 2<>0?'a'+c:c).JoinIntoString('');
  Writeln('Задание 4) ',s1);
  // #5
  Writeln('Задание 5) Сумма кодов (в UNICODE) для длинного слова: ',
      s2.ToCharArray.Select(c->integer(Ord(c))).Sum)
end.

Примеры
Первое слово: Колокольчик однозвучный утомительно звенит
Второе слово: дно
Задание 1) Колокольчик однозвучный утомительно звенит
Задание 3) Более короткое слово  входит в более длиное
Задание 4) дaно
Задание 5) Сумма кодов (в UNICODE) для длинного слова: 42383

Первое слово: ссора
Второе слово: рессора
Задание 1) рессора
Задание 2) ссора
Задание 3) Более короткое слово  входит в более длиное
Задание 4) сaсоaра
Задание 5) Сумма кодов (в UNICODE) для длинного слова: 7589
4,7(47 оценок)
Открыть все ответы
Ответ:
Anonimka89
Anonimka89
07.11.2021

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

Объяснение:

# В комментариях я использовал слово итерация в значении запуска новой функции с данными 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')

4,6(64 оценок)
Ответ:
jefimmalinovski
jefimmalinovski
07.11.2021

1) 9 км

Объяснение:

Транспортная задача (классика теории графов).

Населенные пункты - названия столбцов и строк. Число в пересечении строк и столбцов - расстояние между соответствующими населенными пунктами. Например, для нахождения расстояния между населенными пунктами E и D найдем пересечение строки E и столбца D. На пересечении стоит 1. Значит расстояние между этими населенными пунктами равно одному километру.

Поскольку движение между населенными пунктами двустороннее, длина пути из пункта E в пункт D, равна длине пути из пункта D в пункт E. По этой причине на пересечении строки E и столбца D стоит тоже значение, что и  на пересечении строки D и столбца E. То есть матрица симметричная. Главная диагональ матрицы закрашена, поскольку маршрута из населенного пункта в самого себя не существует.

Вот, собственно и весь смысл приведенной таблицы.

Теперь по поводу задания: найти кротчайший путь от населенного пункта B в населенный пункт C.

Рассмотрим строку B (при желании можно и столбец, ведь матрица-то симметричная).

Единственный путь, который ведет из пункта B ведет в пункт A (никаких других значений в строке B нет).

Длина пути BA равна 3 км.

Посмотрим, куда можно попасть из пункта A.В строке A три значения:

1) |AB|=3 км

нам туда не надо, мы только что оттуда вышли

2) |AC|=7 км

Итак, у нас есть длина первого пути: |BC|=|BA|+|AC|=3+7=10 км.

3) |AF|=2 км

Из F можно вернуться в A и попасть в D. Из D можно попасть в С и в тот-же F. Получаем второй маршрут: |BC|=|BA|+|AF|+|FD|+|DC|=3+2+2+3=10 км.

Рассмотрим обратный путь из C в B.

Населенный пункт C соединен с тремя населенными пунктами: A,D и E.

Проезд через A и D мы рассмотрели, остается проезд через E.

|CB|=|CE|+|ED|+|DF|+|FA|+|AB|=1+1+2+2+3=9 км

Ну, вот мы и нашли кротчайший путь, из всех возможных.

4,5(85 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ