Есть ответ 👍

Дана строка , в которой содержится осмысленное текстовое сообщение. слова сообщения разделяются в заданном формате дд- целое число из диапазона от 1 до 31, мм - целое число из диапазона от 1 до 12, а гг - целое число из диапазона от 1 до 2020 (если какая-то часть формата нарушена, то данная подстрока в качестве даты не рассматривается.) заменить каждую дату сообщения на дату следующего дня. написать программу на паскале.

161
350
Посмотреть ответы 2

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


Во-первых, каков формат года? должно быть 4 знака, то есть = [0001, 2020] во-вторых, каков формат самой даты? это число без разделителей? ? или с разделителями - точками, что более естественно? дд.мм.? или с разделителями - слешами, по-американски? дд/мм/? или совсем по-американски, месяц впереди дня? мм/дд/? или без разделителей, но в обратном порядке? ? я и такое видел! будем считать, что это число без разделителей, 1 вариант, . 8 цифр. тогда проверка должна быть примерно такой: пишу на бейсике, на паскаль сами переводите. poz1 = 1: poz2 = 0 do while poz1 > 0 ' цикл, пока в строке встречаются пробелы     poz2 = instr(poz1, stroka, " ") ' ищем пробел в строке     if poz2 > 0 then ' если нашли пробел - это конец слова             if poz2 - poz1 = 8 then ' если длина слова 8 знаков                     flag = true ' признак, что это 8 цифр, устанавливаем в истину             for i= 1 to 8                           if chr( mid (stroka, poz1 + i - 1, 1)) < & h30 or _                               chr( mid (stroka, poz1 + i - 1, 1)) > & h39 then                                     flag = false ' какой-то из знаков оказался не цифрой                             end if             next i                     if flag = true then ' если это все же 8 цифр, то проверяем, дата ли это                         day = val (mid (stroka, poz1, 2))                           month = val (mid (stroka, poz1+2, 2))                           year = val (mid (stroka, poz1+4, 4))                   if (day > = 1) and (day < = 31) and (month > = 1) and (month < = 12) _                           and (year > = 1) and (year < = 2020) then ' если это дата                                     call changedate(day, month, year) ' вызываем п/п замены даты                           end if                     end if             end if     else ' если не нашли пробел - это было последнее слово             poz2 = len(stroka) ' устанавливаем poz2 на конец строки             if poz2 - poz1 = 8 then ' если длина слова 8 знаков                     flag = true ' признак, что это 8 цифр, устанавливаем в истину             for i= 1 to 8                           if chr( mid (stroka, poz1 + i - 1, 1)) < & h30 or _                               chr( mid (stroka, poz1 + i - 1, 1)) > & h39 then                                     flag = false ' какой-то из знаков оказался не цифрой                             end if             next i                     if flag = true then ' если это все же 8 цифр, то проверяем, дата ли это                         day = val (mid (stroka, poz1, 2))                           month = val (mid (stroka, poz1+2, 2))                           year = val (mid (stroka, poz1+4, 4))                   if (day > = 1) and (day < = 31) and (month > = 1) and (month < = 12) _                           and (year > = 1) and (year < = 2020) then ' если это дата                                     call changedate(day, month, year) ' вызываем п/п замены даты                           end if                     end if             end if     end if     poz1 = poz2 ' устанавливаем начало нового слова loop end sub sub changedate() if (day = 31) and (month = 12) then ' если это было 31 декабря       year = year + 1 ' то ставим 1 января следующего года       strday = "01": strmounth = "01": stryear = trim(str(year)) elseif (day = 31) and (month = 1) then ' 31 января       strday = "01": strmounth = "02": stryear = trim(str(year)) elseif (day = 28) and (month = 2) and (year mod 4 < > 0) then ' 28 февраля       strday = "01": strmounth = "03": stryear = trim(str(year)) elseif (day = 29) and (month = 2) and (year mod 4 = 0) then ' 29 февраля       strday = "01": strmounth = "03": stryear = trim(str(year)) elseif (day = 31) and (month = 3) then ' 31 марта       strday = "01": strmounth = "04": stryear = trim(str(year)) elseif (day = 30) and (month = 4) then ' 30 апреля       strday = "01": strmounth = "05": stryear = trim(str(year)) elseif (day = 31) and (month = 5) then ' 31 мая       strday = "01": strmounth = "06": stryear = trim(str(year)) elseif (day = 30) and (month = 6) then ' 30 июня       strday = "01": strmounth = "07": stryear = trim(str(year)) elseif (day = 31) and (month = 7) then ' 31 июля       strday = "01": strmounth = "08": stryear = trim(str(year)) elseif (day = 31) and (month = 8) then ' 31 августа       strday = "01": strmounth = "09": stryear = trim(str(year)) elseif (day = 30) and (month = 9) then ' 30 сентября       strday = "01": strmounth = "10": stryear = trim(str(year)) elseif (day = 31) and (month = 10) then ' 31 октября       strday = "01": strmounth = "11": stryear = trim(str(year)) elseif (day = 30) and (month = 11) then ' 30 ноября       strday = "01": strmounth = "12": stryear = trim(str(year)) else ' любой другой день       day = day + 1 ' ставим следующий день       if (day < 10) then strday = "0" & trim(str(day)) else strday = trim(str(day))       if (mounth < 10) then strmounth = "0" & trim(str(mounth)) else strmounth = trim(str(mounth)) end if if year < 10 then       stryear = "000" & stryear elseif year < 100 then       stryear = "00" & stryear elseif year < 1000 then       stryear = "0" & stryear end if stroka = left(stroka, poz1) & strday & strmonth & stryear & mid(stroka, poz2) end sub как видите, программа оказалась весьма непростой.
megais
4,7(22 оценок)

Росинка, осинка,санки

Реши свою проблему, спроси otvet5GPT

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

    otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.

Подпишись на наш телеграмм канал

GTP TOP NEWS