PDA

View Full Version : سوال: انجام چند عملیات ریاضی در یک خط



behzadsen
جمعه 18 بهمن 1392, 01:01 صبح
دوستان سلام.
من میخوام توی یه خط کد چند تا محاسبه ریاضی انجام بدم اما هر کاری میکنم نمی تونم انجامش بدم، لطفا کمک کنید.
فرض کنید میخوایم توی یه متغیر این کار هارو انجام بدیم:


Dim Pasokh As Integer
Pasokh = TextBox1.Text + TextBox2.Text + TextBox3.Text \ 2 * TextBox4.Text

یعنی میخوام اول برنامه اعداد تکست 1 تا 3 رو با هم جمع کنه بعد جمع اون 3 عدد رو در 2 تقسیم کنه و بعد نتیجه رو در تکست 4 ضرب کنه.
اما این کد من کار نمیکنه.:گریه:
لطفاً ضمنا این که لطف میکنید و کد من رو اصلاح میکنید یک مقدار هم در موردش توضیح بدید.

محمد آشتیانی
جمعه 18 بهمن 1392, 01:14 صبح
سلام

ببین دوست عزیز ، درسته که VB خودش عمل TypeCast رو بصورت اتوماتیک انجام میده (منظور تبدیل نوع هست) اما بهتره خودت تبدیل رو انجام بدی

بنابراین کدت اینجوری میشه

Dim Pasokh As Integer
Pasokh = Cint(TextBox1.Text) + Cint(TextBox2.Text) + Cint(TextBox3.Text) / 2 * Cint(TextBox4.Text)

اما اولویت عملگرها تو ریاضی یه داستان دیگه هست ، یعنی تو یه عبارت به ترتیب توان بالاترین اولویت رو داره بعدش ضرب و تقسیم اولویت دارن و پائین ترین اولویت مال جمع و منها هست
حالا مثلا اگه تو یه عبارت همزمان هم ضرب بود هم تقسیم اولویت اینا از چپ به راست بالاتره - اگه میخوای اولویت اینا رو تغییر بدی باید از پرانتز استفاده کنی ( عبارت توی پرانتز اول محاسبه میشه)

تو کد خودت اگه این مقادیر رو فرض بگیری
Textbox1 = 5
Textbox2 = 2
Textbox3 = 4
Textbox4 = 5

حاصل عبارتت میشه : 17 چون اول Textbox3 تقسیم بر 2 میشه بعد جوابش ضربدر Textbox4 میشه و آخرش این عدد با Textbox1 و Textbox2 جمع میشه


نتیجه ای که بالا گفتی اینجوری میگیری



Dim Pasokh As Integer
Pasokh = ((Cint(TextBox1.Text) + Cint(TextBox2.Text) + Cint(TextBox3.Text)) / 2) * Cint(TextBox4.Text)

behzadsen
جمعه 18 بهمن 1392, 02:06 صبح
دوست من خیلی ممنون.
کد شمارو اجرا کردم و خوب کار میکنه، اما الان یه مشکل دیگه دار و اونم اینه که اگه یکی از تکست باکس هه خالی باشه و بخوایم این کد رو اجرا کنیم این اخطار رو میده:
Conversion from string "" to type 'Integer' is not valid.

محمد آشتیانی
جمعه 18 بهمن 1392, 02:08 صبح
خب برادر نباید خالی باشه، معلومه میخواد NULL رو تبدیل به Integer بکنه نمیشه دیگه
این چیزا رو باید تو کدت چک کنی

behzadsen
جمعه 18 بهمن 1392, 02:12 صبح
خب برادر نباید خالی باشه، معلومه میخواد NULL رو تبدیل به Integer بکنه نمیشه دیگه
این چیزا رو باید تو کدت چک کنی
دوست عزیزم، من تازه از vb6 به vb.net کوچ کردم، لطفاً بنده رو تحمل بفرمایید.
آیا تابعی مثل val نداریم که با یه دستور تمام null هارو به صفر تبدیل کنه؟

محمد آشتیانی
جمعه 18 بهمن 1392, 02:19 صبح
این حرفا چیه آقا شرمنده نکن
از Val هم میتونی استفاده کنی

behzadsen
جمعه 18 بهمن 1392, 02:26 صبح
این حرفا چیه آقا شرمنده نکن
از Val هم میتونی استفاده کنی
ممنون، لطف میکنید.
حالا میشه به داداشیت بگی val رو چطوری باید توی این دستور که از Cint استفاده کردید جا گذاری کنم؟
بنظرتون این روش درسته :
Pasokh = ((Cint(val(TextBox1.Text)) + Cint(val(TextBox2.Text)) + Cint(val(TextBox3.Text))) / 2) * Cint(val(TextBox4.Text))

محمد آشتیانی
جمعه 18 بهمن 1392, 02:28 صبح
کلا بجای Cint بنویس Val


Dim Pasokh As Integer
Pasokh = ((Val(TextBox1.Text) + Val(TextBox2.Text) + Val(TextBox3.Text)) / 2) * Val(TextBox4.Text)

behzadsen
جمعه 18 بهمن 1392, 02:31 صبح
کلا بجای Cint بنویس Val


Dim Pasokh As Integer
Pasokh = ((Val(TextBox1.Text) + Val(TextBox2.Text) + Val(TextBox3.Text)) / 2) * Val(TextBox4.Text)
ممنون،دست گلت درد نکنه، ببخشید که مزاحم تون شدم.