Во-первых, каков формат года? Должно быть 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 Как видите, программа оказалась весьма непростой.
Строилось значительное количество новых промышленных предприятий, где работали бывшие крестьяне, ставшие наёмными рабочими (в больших городах они составляли целые рабочие окраины). Владели предприятиями уже не помещики, а предприниматели, порой также также из числа бывших крестьян. Новые дороги (прежде всего, железные), также стали строить частные предприятия, потому что это стало экономически выгодно (перевозки грузов и людей возросли, к тому же, государство давало большие кредиты). Возросло количество банков. Они создавали финансовый рынок, соответствовавший капиталистическим отношениям.
5/10
Объяснение: