Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Помогите подалуйста! Очень прошу! Добавлено: 14.02.06 15:32  

Автор вопроса:  Anton | ICQ: 308496507 
Млин в институте перевелся в другую группу, предмета вижуал бейсика не было, а сдавать надо...так вот помогите решить проблемку...препод дал задание:написать программу извлесения квадратного корня,я написал (отрывок text1.text = Sqr(val(Text2.text))
он мол говрит это не то что он хочет и вот что он мне написал:
Как написать подпрограмму и подпрограмму функции,как их вывести...сказал что нужно испольховать FUnction
Помогите кто может сложно сдавать предмет которого не было и я не пойму что он от меня хочет(((

Ответить

  Ответы Всего ответов: 16  

Номер ответа: 1
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #1 Добавлено: 14.02.06 17:27
Возможно, препод имеет в виду реализацию на 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 ?

Ответить

Номер ответа: 2
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #2
Добавлено: 14.02.06 17:29
Прочитай внимательно:

тема - Помогите подалуйста

в тексте - извлесения

Это:
Text1.Text = Sqr(Val(Text2.Text))

в принципе правильно и работает, но можешь сделать например по подобию:

функция для нахождения факториала:

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
Автор ответа:
 Anton



ICQ: 308496507 

Вопросов: 2
Ответов: 12
 Профиль | | #3 Добавлено: 14.02.06 18:33
Сылочка не пашет((((

Ответить

Номер ответа: 4
Автор ответа:
 Anton



ICQ: 308496507 

Вопросов: 2
Ответов: 12
 Профиль | | #4 Добавлено: 14.02.06 18:39
можно поробовать....но х3 я к нему уже 4 раза подходил и все не то( говорит должны быть описааны переменные и введены ( я так понял это ax+bx+c=0) решение квадратного уравнения под корнем будет Д>0 и два коня Х1 Х2 только как это все записать и почему он мне сразу этого не сказал не понимаю....изначально было задание просто извлечение квадратного корня( если еще что может сказать по этому поводу или посоветовать не стесняйтесь а то мне завтра сдавать((((( помогите...всю сессию сдал из за этого предмета не хочеться вылетать(

Ответить

Номер ответа: 5
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #5 Добавлено: 14.02.06 19:17
Плюнь в лицо преподу! Скажи от меня :) Изврат свою ф-цию писать для
вычисления корня! Или ты что-то не так понял... Функция для нахождения
корня есть встроенная в ВБ, КУБ, ПБ, ГВБ итп... короче во всех! нет
никакого смысла писать свою... 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
======

Теперь ты знаешь как работает ф-ция, если умеешь находить корень,
думаю не составит труда оформить функцией.

Ответить

Номер ответа: 6
Автор ответа:
 Anton



ICQ: 308496507 

Вопросов: 2
Ответов: 12
 Профиль | | #6 Добавлено: 14.02.06 19:27
спасибо я думаю это как раз тот что нужно))))

Ответить

Номер ответа: 7
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #7
Добавлено: 14.02.06 19:38
Ты задание прочитай - нажен корень сделай Sqr, функцию или дело то за
малым в чем пробелма?
Осмыли задание - как оно написано и реши, или уже напиши задание
полностью ну и свои мысли ...
не боись сегодня сделаем

Ответить

Номер ответа: 8
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #8 Добавлено: 14.02.06 19:39
С вводом переменных (коэффициентов) и выводом результатов это примерно так выглядит (вся программа)

'получение корней квадратного уравнения
Function GetResult(ByVal a As Double, ByVal b As Double, ByVal c As Double, arrResult() As Double) As Long
    Dim D As Double
    ;D = (b ^ 2 - 4 * a * c)
    If D < 0 Then
        GetResult = 0   'если < 0 - решений нет
        Exit Function
    End If
    ;D = 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

Ответить

Номер ответа: 9
Автор ответа:
 Anton



ICQ: 308496507 

Вопросов: 2
Ответов: 12
 Профиль | | #9 Добавлено: 14.02.06 20:25

Огромнейшее наиспосибище.....млин даже не знаю как и отблагодарить....хоть матушку обрадывал,а то он меня замучал не понимает что предмета такого не было выгоняет меня ничего толком не объяснив..........спасибо.....надеюсь он не читает этот форум))))))пойду дальше разбираться....еще раз спасибо!!!!!О результатах отпишусь!!!!!!!Ура! Всем спасибо)

Ответить

Номер ответа: 10
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #10
Добавлено: 15.02.06 12:46
прикольно!!!

хоть матушку обрадовал, а то ОН меня


А тут поподробнее

Ответить

Номер ответа: 11
Автор ответа:
 Tamplier



ICQ: 298742928 

Вопросов: 58
Ответов: 340
 Профиль | | #11 Добавлено: 15.02.06 18:29
Это уже в офф-топ :)))

Ответить

Номер ответа: 12
Автор ответа:
 Anton



ICQ: 308496507 

Вопросов: 2
Ответов: 12
 Профиль | | #12 Добавлено: 15.02.06 19:38

Да ладно опечатался)))) Так вот преподавателю опять что то не понравилось и он опять толком не объяснил что именно....

Function GetResult(ByVal a As Double, ByVal b As Double, ByVal c As Double, arrResult() As Double) As Long
    ;Dim D As Double
    ;D = (b ^ 2 - 4 * a * c)
    If D < 0 Then
        GetResult = 0 'если < 0 - решений нет
        Exit Function
    End If
    ;D = Sqr(D)
    arrResult(0) = (-b + D) / (2 * a)
    arrResult(1) = (-b - D) / (2 * a)
    GetResult = 1 'решения есть, они в массиве arrResult(он же массив Result)
     
End Function

вот эта часть ему не понравилась сказал мол ему надо чтобы сдесь было видно корни как они выводиться? и он постоянно повторяет "как вызвать подпрограмму и подпрограмму функции в теле кода" кто что думает по этому поводу если кто понял о чем я помогите пожалуйста!

Ответить

Номер ответа: 13
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #13 Добавлено: 15.02.06 22:46
Не уверен, что понял правильно (уж больно корявый язык), но вот вариант того, что он хочет услышать, когда говорит о подпрограмме и подпрограмме функции:
Подпрограммы делятся на два вида:
а) подпрограмма, возвращающая результат своей работы в явном виде - это функция. Её ключевое слово - 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
    ;D = (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


Если и это не то, то я не знаю, что хочет услышать твой преподаватель.

Ответить

Номер ответа: 14
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #14 Добавлено: 15.02.06 22:51
Да, и ещё: подпрограмма функции возвращает значение, и его можно сохранить в переменной соответствующего типа. В предыдущем примере такой переменной была переменная ret As Long, в которую заносился результат Function GetResult.

У Sub GetResult такого не может быть. Она не возвращает никаких значений.

Ответить

Номер ответа: 15
Автор ответа:
 Anton



ICQ: 308496507 

Вопросов: 2
Ответов: 12
 Профиль | | #15 Добавлено: 15.02.06 23:23
Продолжаю изчучать твои посты....спаисбо тебе что ты мне помогаешь,надеюсь что всетки поможет...завтра опять побегу к нему(

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам