Сечение по отношению к сечению бревна, из которого она вырезана, будем рассматривать как прямоугольник, вписанный в окружность. обозначим через a, b стороны прямоугольника, через d его диагональ, s - площадь прямоугольника (сечения). для вписанного в окружность четырёхугольника произведение длин диагоналей равно сумме произведений длин пар противоположных сторон, следовательно, для прямоугольника можно записать d2 = a2+b2. так как s=a·b, то b=s/a, отсюда d2 = a2 + s2/a2. следовательно, s2 = a2(d2-a2). для удобства будем рассматривать квадрат площади, так как при максимальном значении площади будет максимальным и её квадрат. длина диагонали вписанного в окружность прямоугольника равна диаметру этой окружности, поэтому s2 = a2((2·20)2-a2) = a2(1600-a2) = 1600a2-a4 для того, чтобы найти максимум или минимум функции, нужно взять от неё производную и приравнять к нулю. ( 1600a2-a4)' = 3200a-4a3 3200a-4a3 = 0 a(3200-4a2) = 0 a=0 - в этом случае никакого бруска не будет 3200-4a2 = 0 a2=800 a = 20√2 см квадрат площади сечения в этом случае будет равен s2 = 800·1600 - 8002 = 640000 см4 площадь будет равна s = √640000 = 800 см2 длина второй стороны прямоугольника будет равна b = 800/20√2 = 20√2 см. для того, чтобы сечение было максимальным, нужно, чтобы оно представляло собой квадрат со сторонами 20√2 см, тогда площадь сечения будет равна 800 см2.
garikman-flesh486
01.10.2021
Во-первых, каков формат года? должно быть 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 как видите, программа оказалась весьма непростой.