Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Basic / VBA


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты данной рассылки

Гаряка Асмик
Статус: Профессор
Рейтинг: 6538
∙ повысить рейтинг »
Vasiliy83
Статус: Профессионал
Рейтинг: 2099
∙ повысить рейтинг »
Megaloman
Статус: Профессор
Рейтинг: 1698
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Basic/VBA

Номер выпуска:1058
Дата выхода:31.12.2010, 14:00
Администратор рассылки:Калашников О.А. (Руководитель)
Подписчиков / экспертов:198 / 87
Вопросов / ответов:2 / 3

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


Вопрос № 181619: Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос: Сделать задание 1 и 2.В приложении Скачать...

Вопрос № 181618:

Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос:
Сделать задание 1 и 2.В приложении
Скачать

Отправлен: 26.12.2010, 13:36
Вопрос задал: Benqq (Посетитель)
Всего ответов: 2
Страница вопроса »


Отвечает Борисыч (Профессор) :
Здравствуйте, 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

Если требуются пояснения, задавайте вопросы в мини-форуме.

Ответ отправил: Борисыч (Профессор)
Ответ отправлен: 26.12.2010, 14:53
Номер ответа: 265098
Россия, Ковров
Тел.: +79107793141
Организация: КГТА, УЦ "Альфа"

Оценка ответа: 5

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 265098 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Отвечает Megaloman (Профессор) :
    Здравствуйте, 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-таблице можно загрузить. Прикрепленный файл: загрузить »

    -----
    Нет времени на медленные танцы

    Ответ отправил: Megaloman (Профессор)
    Ответ отправлен: 26.12.2010, 16:25
    Номер ответа: 265104
    Беларусь, Гомель
    ICQ # 475943357

    Оценка ответа: 5

    Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 265104 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Вопрос № 181619:

    Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос:
    Сделать задание 1 и 2.В приложении
    Скачать

    Отправлен: 26.12.2010, 13:40
    Вопрос задал: Benqq (Посетитель)
    Всего ответов: 1
    Страница вопроса »


    Отвечает Megaloman (Профессор) :
    Здравствуйте, 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 ^ 3 + 3
    Msg = "a=" + Format(a, "# ##0.00") + vbCrLf + "t=" + Format(t, "# ##0.00") + vbC rLf + "y= a*t^3+3 = "
    Case Is > 2
    a = InSng(Range(Ra), DD)
    b = InSng(Range(Rb), DD)
    y = Exp(a * t) * Cos(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)*Cos(b*t) = "
    Case Is < 1
    Msg = "t=" + Format(t, "# ##0.00") + vbCrLf + "y= "
    y = 4
    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-таблице можно загрузить. Прикрепленный файл: загрузить »

    -----
    Нет времени на медленные танцы

    Ответ отправил: Megaloman (Профессор)
    Ответ отправлен: 26.12.2010, 16:54
    Номер ответа: 265106
    Беларусь, Гомель
    ICQ # 475943357

    Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 265106 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFPRO.RU, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.25 от 13.12.2010

    В избранное