PDA

View Full Version : مبتدی: سوال : چگونگی حل معادله درجه 2 با گرفتنه ضرایبش !!



مهرنوووش
چهارشنبه 02 اسفند 1391, 20:18 عصر
سلام .
دو تا سوال دارم ...

من چون مبتدیم نمیدونم رادیکالو با چه تابعی محاسبه کنم برا معادله درجه 2 :
برای معادله درجه 1 هم این کدو مینویسم که نمیدونم چرا جوابش هیچ ربطی بهش نداره ؟!
ممنون میشم راهنماییم کنین !!!

Private Sub Command1_Click()
Dim x@
a = Val(Text1.Text)
b = Val(Text2.Text)
y = Val(Text3.Text)
x = y - b / a
Label1.Caption = x

End Sub

حمید محمودی
چهارشنبه 02 اسفند 1391, 20:50 عصر
معادله درجه اول

c = Val(Txt1.Text)
x = Val(Txt2.Text)
Msgbox Str(c / x)



معادله درجه دوم

a = Val(TxtA1.Text)
b = Val(TxtB1.Text)
c = Val(TxtC1.Text)
delta = (b * b) - (4 * a * c)

If (delta > 0) Then
Lable1.Caption = Str(((-1 * b) + Sqr(delta)) / (2 * a)) + " , " + Str(((-1 * b) - Sqr(delta)) / (2 * a))
Else
If (delta = 0) Then
Lable1.Caption = (-1 * b) / (2 * a)
Else
Lable1.Caption = "No Answer"
End If
End If

مهرنوووش
چهارشنبه 02 اسفند 1391, 22:17 عصر
مچکرمممممممممممم ...
خب من ازین کداتون ایده گرفتم به صورت مبتدی کد معادله درجه 1 رو نوشتم به صورت زیر : (چون هنوز اون توابعو نخوندم)!!!


Dim x@
Private Sub Command1_Click()

a = Val(Text1.Text) ' zaribe x
b = Val(Text2.Text) ' adade sabet
y = Val(Text3.Text) ' adade untarafe mosavi
x = (y - b) / a
Label1.Caption = x
End Sub

Private Sub Command2_Click()
a = Val(Text1.Text)
b = Val(Text2.Text)
y = Val(Text3.Text)
x = (y + b) / a
Label1.Caption = x
End Sub



حالا یه سوال دیگه !!!
تو این کدی که نوشتم میخوام یجوری بشه وقتی که جواب اخر اعشاری میشه تقسیم صورت نگیره !!!!
مثلا وقتی جواب اخر 1 سوم میاد نیاد جوابو به صورت 0.33 بهمون بده !!!! و همون 1/3 رو بهمون بده !!!!!!!
اینو چیکارش کنم ؟

بعد معادله درجه دورم نگاه کنم باز میام سوالامو میپرسم !!!! (مطمئنا دود از کللتون بلند میشه !!)!! :لبخند:

SlowCode
چهارشنبه 02 اسفند 1391, 23:30 عصر
خیلی خب حالا دعوا نکنین:گیج:
اگه میخوای بنویسی خب بیا اینم کد:
makhraj = 10 ^ Len(Mid(Text1, InStrRev(Text1, ".") + 1))
surat = Text1 * makhraj
MsgBox surat & "/" & makhraj

مهرنوووش
پنج شنبه 03 اسفند 1391, 04:22 صبح
سلام ...
خب من معادله درجه اولو نهایتا اینجوری به صورت مبتدی (تا حدی که خوندم ) نوشتم و از ایده هاتون استفاده کردم :
اون سوالیم که تو پست 3 پرسیده بودم بعده کلی فسفر سوزوندن ، اینطوری نوشتم :

Private Sub Command1_Click()
Dim x@
a = Val(Text1.Text) ' zaribe x
b = Val(Text2.Text) ' adade sabet
y = Val(Text3.Text) ' adade untarafe mosavi
x = (y - b) / a
Label1.Caption = x
If (y - b) Mod a <> 0 Then Label1.Caption = (y - b) & "/" & a
' dokemeye dovom o kolle codasho pak kardam zira age zaribo manfi bedim kare hamun
' dokmeye dovomo anjam mide
End Sub



معادله درجه دورم اینجوری نوشتم و با عددهای مختلفی تستش کردم جواب درست بود : (البته دهنم صاف شد بس که رو اینا انقد فکر کردم)!!!! دقیقا عین پست دو هست با این تفاوت که چون هنوز به اون توابع نرسیدم اومدم با کمکه همون کد این کدو مبتدی ترش کردم و بیشتر کشش دادم تا برام جا بیوفته !!!!

Private Sub Command1_Click()
a = Val(Text1.Text) ' zaribe x^2
b = Val(Text2.Text) 'zaribe x
c = Val(Text3.Text) 'adade sabet
y = Val(Text4.Text) ' adade unvare mosaviii (dar surate vujud)
delta = b ^ 2 - 4 * a * c
c = c - y
If delta > 0 Then
Label1.Caption = (-b + Sqr(delta)) / (2 * a) & "," & (-b - Sqr(delta)) / (2 * a)
ElseIf delta = 0 Then
Label1.Caption = -b / (2 * a) & "," & -b / (2 * a)
Else
Label1.Caption = " rishe nadarad"
End If
End Sub



حالا سوالام !!!!!!!!!! :لبخند::لبخند::لبخند:

خب میخوام تو معادله درجه 2 : عددی که از زیر رادیکال میاد بیرون یه عدد صحیح باشه و اگه اعشاری باشه نیاد بیرون !!!!!
مثلا اگه زیر رادیکال عدد 4 داریم خب 2 بیاد بیرون !!!! اگرم زیر رادیکال 2 داریم همون رادیکال دو بیاد بیرون !!!!!!
فقط این یه کده کوچولورو میخوام !!!! و اینکه این کدو چطوری باید وسطه اونهمه کد جا بدم ؟! :گیج:

پی نوشت : دلیلم از پرسیدنه این سوالا اینه : از الان که مبتدیم و تازه کار کردن با وی بیو شروع کردم میخوام با کدها بازی کنم و ذهنم اماده بشه !!!!!!
که تا الانم همینطور شده ...!!!! اینجوری خیلی عمیق و مفهومی یاد میگیرم !!!
از طرفیم وقتی یکی به طور دستی جواب معادلاتو بدس میاره ، اصولا به طور دقیق اینکارو نمیکنه !! و محاسبات اضافی و وقت گیر انجام نمیده !!! نمیاد کلا رادیکالارو باز کنه یا یک سومو محاسبه کنه !!!! و ...
میخوام همون جوابی رو که دستی بدس میاریم از طریق برنامه هم بتونیم چکش کنیم !!!

SlowCode
پنج شنبه 03 اسفند 1391, 07:47 صبح
این شرط رو با شرط خودت عوض کن.
If delta > 0 Then
r1 = (-b + Sqr(delta)) / (2 * a)
r2 = (-b - Sqr(delta)) / (2 * a)
If Not (TypeName(r1) = "Double" And TypeName(r2) = "Double") Then Label1.Caption = r1 & " , " & r2
ElseIf delta = 0 Then
Label1.Caption = -b / (2 * a)
Else
Label1.Caption = " rishe nadarad"
End If

خب میخوام تو معادله درجه 2 : عددی که از زیر رادیکال میاد بیرون یه عدد صحیح باشه و اگه اعشاری باشه نیاد بیرون !!!!!واسه اینکار کافیه نوع عدد رو تشخیص بدی، اگه از نوع Double باشه یعنی اعشاری هست.

مثلا اگه زیر رادیکال عدد 4 داریم خب 2 بیاد بیرون !!!! اگرم زیر رادیکال 2 داریم همون رادیکال دو بیاد بیرون !!!!!!یعنی کاراکتر رادیکال رو نشون بده؟ اینو ولش کنسخته، شما همون اعشاری رو نشون بدی بهتره! کنترلهای وی بی 6 تو نمایش کاراکترهای خاص از جمله رادیکال مشکل داره.

یادم رفت بگم، اون کد رو واسه دلتای صفر اشتباه نوشتین. وقتی دلتا صفر میشه ریشه مضاعف بدست میاد، یعنی دوتا ریشه یکسان و همون R1,R2. میتونی هر دوتاش رو نشون بدی و یا یکیش رو.

مهرنوووش
پنج شنبه 03 اسفند 1391, 07:58 صبح
درسته میخواستم رادیکالو نشون بده ... پس اگه نمیشه ولش کن !!!!!!

بعد متوجه نشدم دلتا صفر کجاش غلطه دقیقا ؟ اگه میشه نشون بده چون هر دو تا ریشه رو دقیقا عین هم نوشتم !!!!!!
هر چی نگاه کردم نفهمیدم مشکلش کجاس !!


پی نوشت : اها الان گرفتم !!!!!! منظورت اینه این کدتو جایگزین اون یکی کنم !!

If delta >= 0 Then
r1 = (-b + Sqr(delta)) / (2 * a)
r2 = (-b - Sqr(delta)) / (2 * a)
Label1.Caption = r1 & " , " & r2
Else
Label1.Caption = " rishe nadarad"
End If




افرین درسته !!!
خیلی جمع و جورتر و بهتره!!!!!! اصن به فکرم نرسیده بود ...

SlowCode
پنج شنبه 03 اسفند 1391, 08:02 صبح
بعد متوجه نشدم دلتا صفر کجاش غلطه دقیقا ؟ اگه میشه نشون بده چون هر دو تا ریشه رو دقیقا عین هم نوشتم !!!!!!
نه غلط غلط هم نیست! جواب رو درست میده.
از لحاظ الگوریتمی گفتم چون میتونستی ساده تر هم بنویسی.
همون کد خودت رو بنویس درسته.

درسته میخواستم رادیکالو نشون بده ... پس اگه نمیشه ولش کن !!!!!!
میشه ولی به درد نمیخوره! وقت تلف کردنه.