По следующему тексту постройте таблицу:
К новому учебному году школа получила следующее оборудование: 12 компьютеров для кабинета информатики; 1 интерактивную доску для кабинета математики; 21 стол для кабинета биологии; 1 интерактивную доску для кабинета физики; 24 стола для кабинета информатики; 1 компьютер для кабинета биологии; 1 проектор для кабинета биологии; 20 столов для кабинета начальных классов; 3 аквариума для кабинета биологии; 1 аквариум для кабинета начальных классов; 21 стол для кабинета математики; 1 проектор для кабинета физики; 21 стул для кабинета математики; 2 шкафа для кабинета математики; 1 проектор для кабинета начальных классов; 1 интерактивную доску для кабинета начальных классов; 8 компьютеров для кабинета начальных классов; 2 шкафа для кабинета информатики; по 3 шкафа для кабинета физики и биологии; 36 стульев для кабинета информатики; 1 интерактивную доску для кабинета информатики; 2 компьютера для кабинета физики.
Организуйте в таблице вычисления для определения количества единиц оборудования каждого вида, полученного школой к новому учебному году.
Обозначим через 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.
Во-вторых, каков формат самой даты? Это число без разделителей? ддмм?
Или с разделителями - точками, что более естественно? дд.мм.?
Или с разделителями - слешами, по-американски? дд/мм/?
Или совсем по-американски, месяц впереди дня? мм/дд/?
Или без разделителей, но в обратном порядке? ммдд? Я и такое видел!
Будем считать, что это число без разделителей, 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
Как видите, программа оказалась весьма непростой.