powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Выражение с корнями, под корень часто попадают отрицательные значения....
14 сообщений из 14, страница 1 из 1
Выражение с корнями, под корень часто попадают отрицательные значения....
    #37158151
Sergey Mikhaylov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сам вопрос вот в чем.. Нужно составить программу ЛИНЕЙНОЙ структуры.... Т.е тут мне операторы не помогут...
Как сделать чтобы не выдавало ошибок... корень из отрицательного числа то не посчитаешь... может как то исправить ситуацию можно. Конечно хотел поставить в выражении под корнями Abs(x1) и Abs(x2) но будет "палевно"....
Вот весь код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
Private Sub Command1_Click()
    'Объявляем переменные
    Dim x1 As Single
    Dim x2 As Single
    Dim y As Single
    Dim z As Single
    Dim a As Integer
    Dim b As Integer
    Dim c As Integer
    
    'Константа Экспоненты
    Const e =  2 . 71828182845905 
'Присваиваем переменным значения вводимые в TextBox с клавиатуры, Функция Val служит для перевода "строки" в число
a = Val(Text1.Text)
b = Val(Text2.Text)
c = Val(Text3.Text)

x1 = (b + Sqr(Abs((b ^  2 ) - ( 4  * a * c)))) / ( 2  * a)
x2 = (b - Sqr(Abs((b ^  2 ) - ( 4  * a * c)))) / ( 2  * a)

y = (e ^ (-x1) + e ^ (-x2)) / ( 2 )
z = (a * Sqr(x1) - b * Sqr(x2)) / (c)


Label4.Caption = y
Label5.Caption = z

End Sub
...
Рейтинг: 0 / 0
Выражение с корнями, под корень часто попадают отрицательные значения....
    #37158154
Sergey Mikhaylov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
z = (a * Sqr(x1) - b * Sqr(x2)) / (c)

Вот сдесь всегда ошибку выдает... ((((( Ребят помогите....
...
Рейтинг: 0 / 0
Выражение с корнями, под корень часто попадают отрицательные значения....
    #37158156
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проверяй аргументы на валидность и выдавай предупреждение
...
Рейтинг: 0 / 0
Выражение с корнями, под корень часто попадают отрицательные значения....
    #37158255
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
Sqr(x1+Sign(x1))
Не такое палево, как ABS() - хотя тоже бредятина...
...
Рейтинг: 0 / 0
Выражение с корнями, под корень часто попадают отрицательные значения....
    #37158256
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пардон, не плюс, а умножение, конечно.
...
Рейтинг: 0 / 0
Выражение с корнями, под корень часто попадают отрицательные значения....
    #37158359
.Михаил.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey MikhaylovВот сдесь всегда ошибку выдает...
Первое что приходит в голову - x1 или/и x2 отрицательные.
...
Рейтинг: 0 / 0
Выражение с корнями, под корень часто попадают отрицательные значения....
    #37158409
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey MikhaylovКак сделать чтобы не выдавало ошибок...
Код: plaintext
On Error Resume Next
Панацея от ошибок.
...
Рейтинг: 0 / 0
Выражение с корнями, под корень часто попадают отрицательные значения....
    #37158410
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtimSergey MikhaylovКак сделать чтобы не выдавало ошибок...
Код: plaintext
On Error Resume Next
Панацея от ошибок.
В зачётке, правда, будет - неуд
...
Рейтинг: 0 / 0
Выражение с корнями, под корень часто попадают отрицательные значения....
    #37158515
Sergey Mikhaylov
Код: plaintext
z = (a * Sqr(x1) - b * Sqr(x2)) / (c)

Вот сдесь всегда ошибку выдает... ((((( Ребят помогите....
Проверяйте значения аргумента перед извлечением квадратого корня. Если ТЗ ограничивается областью действительных чисел, то сойдет так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
Private Sub Command1_Click()
    'Объявляем переменные
    Dim x1 As Single
    Dim x2 As Single
    Dim y As Single
    Dim z As Single
    Dim a As Integer
    Dim b As Integer
    Dim c As Integer
    Dim s As String
    
    'Константа Экспоненты
    Const e =  2 . 71828182845905 
    Const Im = "<комплексное>"
'Присваиваем переменным значения вводимые в TextBox с клавиатуры, Функция Val служит для перевода "строки" в число
a = Val(Text1.Text)
b = Val(Text2.Text)
c = Val(Text3.Text)

x1 = (b + Sqr(Abs((b ^  2 ) - ( 4  * a * c)))) / ( 2  * a)
x2 = (b - Sqr(Abs((b ^  2 ) - ( 4  * a * c)))) / ( 2  * a)

y = (e ^ (-x1) + e ^ (-x2)) / ( 2 )

If x1 <  0  Or x2 <  0  Then
  s = Im  
Else 
  z = (a * Sqr(x1) - b * Sqr(x2)) / (c)
  s = CStr(z)
End If


Label4.Caption = y
'Label5.Caption = z
Label5.Caption = s

End Sub
...
Рейтинг: 0 / 0
Выражение с корнями, под корень часто попадают отрицательные значения....
    #37158663
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
x1 = (b + Sqr(Abs((b ^  2 ) - ( 4  * a * c)))) / ( 2  * a)
x2 = (b - Sqr(Abs((b ^  2 ) - ( 4  * a * c)))) / ( 2  * a)
За это тоже по головке не погладят.
Sqr и т.д. достаточно тяжелое действие, а выполняется дважды. При выполнении этого кода в цикле, например, будет двойная порция тормозов. Плюс b ^ 2 гораздо медленнее, чем b * b.
Код: plaintext
1.
2.
sq = Sqr(Abs((b * b) - ( 4  * a * c)))
x1 = (b + sq)/( 2 *a)
x1 = (b - sq)/( 2 *a)
...
Рейтинг: 0 / 0
Выражение с корнями, под корень часто попадают отрицательные значения....
    #37158678
Sergey Mikhaylov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое Ребята! Просто линейно тут никак походу нельзя обойтись... Условие проверять обязательно!
Иначе как тут... хмм.... никак
...
Рейтинг: 0 / 0
Выражение с корнями, под корень часто попадают отрицательные значения....
    #37158707
Sergey MikhaylovСпасибо большое Ребята! Просто линейно тут никак походу нельзя обойтись... Условие проверять обязательно!
Иначе как тут... хмм.... никакможно и линейно...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
' {skipped}

y = (e ^ (-x1) + e ^ (-x2)) / ( 2 )

Label5.Caption = "при вычислении Z получили ошибку"
On Error Resume Next

z = (a * Sqr(x1) - b * Sqr(x2)) / (c)

On Error GoTo  0 


Label4.Caption = y
Label5.Caption = z

' {skipped}
...
Рейтинг: 0 / 0
Выражение с корнями, под корень часто попадают отрицательные значения....
    #37160725
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аллё...
А причём здеь палево? Алгебру забыли?
В первую очередь, проверяться на знак должен дискриминант
Код: plaintext
(b ^ 2) - (4 * a * c)
И вот на основе этого решаться количество корней и их действительность/мнимость.

ON ERROR RESUME - оставьте для обработки исключений...
...
Рейтинг: 0 / 0
Выражение с корнями, под корень часто попадают отрицательные значения....
    #37168566
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь, видимо, читал через слово. Один пост пропустил - вот и наврал.

Если решение нужно в действительных - то будет достаточно и ABS():
Код: plaintext
z = (a * Sqr(Abs(x1)) - b * Sqr(Abs(x2))) / (c)
Иначе - проще использовать условие.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Выражение с корнями, под корень часто попадают отрицательные значения....
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]