Млин в институте перевелся в другую группу, предмета вижуал бейсика не было, а сдавать надо...так вот помогите решить проблемку...препод дал задание:написать программу извлесения квадратного корня,я написал (отрывок text1.text = Sqr(val(Text2.text))
он мол говрит это не то что он хочет и вот что он мне написал:
Как написать подпрограмму и подпрограмму функции,как их вывести...сказал что нужно испольховать FUnction
Помогите кто может сложно сдавать предмет которого не было и я не пойму что он от меня хочет(((
Возможно, препод имеет в виду реализацию на VB http://algolist.manual.ru/maths/count_fast/sqrt.php, http://algolist.manual.ru/maths/count_fast/intsqrt.php или http://algolist.manual.ru/maths/count_fast/inverse.php ?
в принципе правильно и работает, но можешь сделать например по подобию:
функция для нахождения факториала:
Function Fact(bytA As Double) As Double
Dim bytI As Double
Dim intFact As Double
intFact = 1
For bytI = 1 To bytA
intFact = intFact * bytI
Next
Fact = intFact
End Function
можно поробовать....но х3 я к нему уже 4 раза подходил и все не то( говорит должны быть описааны переменные и введены ( я так понял это ax+bx+c=0) решение квадратного уравнения под корнем будет Д>0 и два коня Х1 Х2 только как это все записать и почему он мне сразу этого не сказал не понимаю....изначально было задание просто извлечение квадратного корня( если еще что может сказать по этому поводу или посоветовать не стесняйтесь а то мне завтра сдавать((((( помогите...всю сессию сдал из за этого предмета не хочеться вылетать(
Плюнь в лицо преподу! Скажи от меня Изврат свою ф-цию писать для
вычисления корня! Или ты что-то не так понял... Функция для нахождения
корня есть встроенная в ВБ, КУБ, ПБ, ГВБ итп... короче во всех! нет
никакого смысла писать свою... Sqr рулит... я чесно говоря и не знаю
как корень самому найти... Могу про функции рассказать
Private Function MySomeFunction (a as Integer, b as Integer) as Integer
MySomeFunction = a + b
End Function
Private - доступна только в этом модуле/форме/классе итп
бывает ещё Public тогда доступна везде. Можно вообще не писать, по
умолч - Private, вроде...
Function - ключевое, так надо...
MySomeFunction - такое я придумал имя ф-ции
(a as Integer, b as Integer) ф-ция принимает 2 параметра, т.е. 2
переменные целого типа a и b
...) as Integer - функция возвращае целый тип. Если не писать будет
Variant - не есть хорошо...
MySomeFunction = a + b
Нашей ф-ции присваевается сумма двух передаваемый параметров.
-----------
Вызов:
Private Sub Form_Load()
Dim i as Integer, a as Integer, b as Integer
a = 10
b = 20
i = MySomeFunction (a, b)
'i будет 30
End Sub
======
Теперь ты знаешь как работает ф-ция, если умеешь находить корень,
думаю не составит труда оформить функцией.
Ты задание прочитай - нажен корень сделай Sqr, функцию или дело то за
малым в чем пробелма?
Осмыли задание - как оно написано и реши, или уже напиши задание
полностью ну и свои мысли ...
не боись сегодня сделаем
С вводом переменных (коэффициентов) и выводом результатов это примерно так выглядит (вся программа)
'получение корней квадратного уравнения
Function GetResult(ByVal a As Double, ByVal b As Double, ByVal c As Double, arrResult() As Double) As Long
Dim D As Double
  = (b ^ 2 - 4 * a * c)
If D < 0 Then
GetResult = 0 'если < 0 - решений нет
Exit Function
End If
  = Sqr(D)
arrResult(0) = (-b + D) / (2 * a)
arrResult(1) = (-b - D) / (2 * a)
GetResult = 1 'решения есть, они в массиве arrResult(он же массив Result)
End Function
Private Sub Form_Load()
Dim a As Double 'описания переменных
Dim b As Double
Dim c As Double
Dim Result(2) As Double
Dim ret As Long
'ввод переменных
a = InputBox("Введите коэффициент 'a'"
b = InputBox("Введите коэффициент 'b'"
c = InputBox("Введите коэффициент 'c'"
'получение результата
ret = GetResult(ByVal a, ByVal b, ByVal c, Result())
'вывод результата
If ret <> 0 Then
MsgBox "x1 = " & Result(0) & vbNewLine & "x2 = " & Result(1)
Else
MsgBox "Решений нет"
End If
End Sub
Огромнейшее наиспосибище.....млин даже не знаю как и отблагодарить....хоть матушку обрадывал,а то он меня замучал не понимает что предмета такого не было выгоняет меня ничего толком не объяснив..........спасибо.....надеюсь он не читает этот форум))))))пойду дальше разбираться....еще раз спасибо!!!!!О результатах отпишусь!!!!!!!Ура! Всем спасибо)
Да ладно опечатался)))) Так вот преподавателю опять что то не понравилось и он опять толком не объяснил что именно....
Function GetResult(ByVal a As Double, ByVal b As Double, ByVal c As Double, arrResult() As Double) As Long
 im D As Double
  = (b ^ 2 - 4 * a * c)
If D < 0 Then
GetResult = 0 'если < 0 - решений нет
Exit Function
End If
  = Sqr(D)
arrResult(0) = (-b + D) / (2 * a)
arrResult(1) = (-b - D) / (2 * a)
GetResult = 1 'решения есть, они в массиве arrResult(он же массив Result)
End Function
вот эта часть ему не понравилась сказал мол ему надо чтобы сдесь было видно корни как они выводиться? и он постоянно повторяет "как вызвать подпрограмму и подпрограмму функции в теле кода" кто что думает по этому поводу если кто понял о чем я помогите пожалуйста!
Не уверен, что понял правильно (уж больно корявый язык), но вот вариант того, что он хочет услышать, когда говорит о подпрограмме и подпрограмме функции:
Подпрограммы делятся на два вида:
а) подпрограмма, возвращающая результат своей работы в явном виде - это функция. Её ключевое слово - Function. У неё есть возвращаемое значение того или иного типа Function ......... As Long. As Long указывает тип возвращаемого значения. В данном случае возвращаемым значением функции GetResult является 0 или 1 (условный признак наличия или отсутствия решений уравнения). Кроме явного вида, можно возвращать результаты работы в виде заполненных переменных, которые были переданы ей для заполнения. Массив arrResult() из двух элементов передан в функцию для заполнения, и при наличии решений уравнения массив заполняется корнями уравнения.
б) подпрограмма, которая не возвращает явно никаких значений, имеет ключевое слово Sub. Она также как и Function может заполнять переданные ей в качестве параметров переменные, но возвращать непосредственно результат, как Function, она не может. Т.е. у неё не может быть на конце As Long (или As <что бы то ни было>
Вот пример с подпрограммой, не являющейся функцией, посмотри разницу с предыдущим примером
'получение корней квадратного уравнения
Sub GetResult(ByVal a As Double, ByVal b As Double, ByVal c As Double, arrResult() As Double)
Dim D As Double
  = (b ^ 2 - 4 * a * c) 'дискриминант (или как он там называется)
If D < 0 Then 'если дисриминант < 0 - уравнение не имеет решений
Exit Sub 'выходим из подпрограммы
End If
'если решения есть, указываем размер массива - 2 элемента (x1 и x2)
ReDim Preserve arrResult(0 To 1)
'и сами два решения уравнения: x1 и x2
arrResult(0) = (-b + Sqr(D)) / (2 * a) 'x1 = -b + корень из D деленное на 2a
arrResult(1) = (-b - Sqr(D)) / (2 * a) 'x2 = -b - корень из D деленное на 2a
End Sub
Private Sub Form_Load()
Dim a As Double 'описания переменных
Dim b As Double
Dim c As Double
Dim Result() As Double 'заранее не указываем размер массива.просто об'явили его
'ввод переменных
a = InputBox("Введите коэффициент 'a'"
b = InputBox("Введите коэффициент 'b'"
c = InputBox("Введите коэффициент 'c'"
'получение результата
'передаем в подпрограмму коэффициенты и массив для заполнения решениями уравнения
GetResult ByVal a, ByVal b, ByVal c, Result()
'вывод результата
'указываем обработчик ошибки - метке ErrorLabel:
On Error GoTo ErrorLabel
'если на следующей строке произойдёт ошибка - попытка считать из не заполненного массива
'то это значит, что массив не был заполнен, т.к. уравнения не имеет решений
'и по ошибке переходим на метку ErrorLabel, где сообщаем об отсутствии корней
'Пытаемся показать корни:
MsgBox "x1 = " & Result(0) & vbNewLine & "x2 = " & Result(1)
'если корни есть, то они будут выведены и мы окажемся здесь:
Exit Sub 'выходим из процедуры Form_Load(), чтобы проскочить сообщение об ошибке
ErrorLabel:
'если оказались тут, значит была ошибка - попытка
'считать из массива несуществующие значения
MsgBox "Уравнение не имеет решений"
End Sub
Если и это не то, то я не знаю, что хочет услышать твой преподаватель.
Да, и ещё: подпрограмма функции возвращает значение, и его можно сохранить в переменной соответствующего типа. В предыдущем примере такой переменной была переменная ret As Long, в которую заносился результат Function GetResult.
У Sub GetResult такого не может быть. Она не возвращает никаких значений.