Консультация № 181618
26.12.2010, 13:36
71.69 руб.
0 2 2
Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос:
Сделать задание 1 и 2.В приложении
Скачать

Обсуждение

давно
Академик
320937
2216
26.12.2010, 14:53
общий
это ответ
Здравствуйте, Benqq! Ответ на задание 2.
181618-2.zip (13.0 кб)
Текст макроса
Код:
Option Explicit

Rem Задание 2. Написать программу решения квадратного уравнения
Rem ах2+bx+c=0 с помощью условного оператора Select…Case.
Rem В программе рассмотреть три случая: D=0,D>0,D<0.
Rem В программе использовать обращение к ячейкам и операторы ввода/вывода.
Rem Вызов программы организовать с листа Excel. Пример оформления задачи на рисунке

Sub Кнопка1_Щелчок()
Dim a As Single, b As Single, c As Single
Dim d As Single, x1 As Single, x2 As Single

a = Range("a5")
b = Range("b5")
c = Range("c5")
d = b ^ 2 - 4 * a * c

Range("a9") = d
Select Case d
Case 0
x1 = -b / (2 * a)
Range("b8") = "Единственное решение"
Range("b9") = x1
Range("c9") = ""
Case Is > 0
x1 = (-b + Sqr(d)) / (2 * a)
x2 = (-b - Sqr(d)) / (2 * a)
Range("b8") = "Два решения"
Range("b9") = x1
Range("c9") = x2
Case Else
Range("b8") = "Нет решений"
Range("b9") = ""
Range("c9") = ""
End Select
End Sub

Если требуются пояснения, задавайте вопросы в мини-форуме.
5
давно
Модератор
137394
1850
26.12.2010, 16:25
общий
это ответ
Здравствуйте, Benqq! Вот ответ на первое задание. Код макроса
Код:
Sub Z1()

Dim a, b, t, y As Single
Dim Ra, Rb, Rt, Ry, tt As String
Dim Msg As String

Ra = "A6" ' Адреса ячеек, где введём a и b, и отобразим t и y
Rb = "B6"
Rt = "C6"
Ry = "D6"

DD = Mid(5 / 2, 2, 1) ' Определю разделитель целой и дробной части

t = InSng(InputBox("Введите число"), DD)

Select Case t
Case 1 To 2
a = InSng(Range(Ra), DD)
y = a * t ^ 2
Msg = "a=" + Format(a, "# ##0.00") + vbCrLf + "t=" + Format(t, "# ##0.00") + vbCrLf + "y= a*t^2 = "
Case Is > 2
a = InSng(Range(Ra), DD)
b = InSng(Range(Rb), DD)
y = Exp(a * t) * Sin(b * t)
Msg = "a=" + Format(a, "# ##0.00") + vbCrLf + "b=" + Format(b, "# ##0.00") + vbCrLf + "t=" + Format(t, "# ##0.00") + vbCrLf + "y= Exp(a*t)*Sin(b*t) = "
Case Is < 1
Msg = "t=" + Format(t, "# ##0.00") + vbCrLf + "y= "
y = 1
End Select

Range(Rt) = t
Range(Ry) = y

MsgBox Msg + Format(y, "# ### ##0.00")

End Sub
Function InSng(InData, D) As Single
tt = Replace(InData, ".", D)
tt = Replace(tt, ",", D)
InSng = CSng(tt)
End Function
Пояснение: Я написал свою функцию InSng, чтобы входные данные не были чувствительны к разделителю десятичной части (точка или запятая). Установленнйй в системе разделитель я определяю вырезкой второго символа результата деления 5/2= 2.5
Готовый пример в Excel-таблице можно загрузить.
Прикрепленные файлы:
5
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
Форма ответа