صفحه 1 از 2

سئوال در برنامه نويسي وي بي

ارسال شده: جمعه ۲۰ مهر ۱۳۸۶, ۶:۵۰ ب.ظ
توسط Present
من باید به عنوان پروژه یک برنامه بنویسم که دوعدد بسیار بزرگ را با هم جمع کند(ضربش را نوشتم)
اگه میشه همه خواص لیست باکس را توضیح بدهید(میخوام تمام اعداد داخل یک لیست را با هم جمع کنم)
با تشکر

ارسال شده: جمعه ۲۰ مهر ۱۳۸۶, ۱۰:۰۹ ب.ظ
توسط aminjan
Dim m As Long
For i = 0 To List1.ListCount
m = m + Val(List1.List(i))
Next
Print m


------------
کد بالا همه اعداد تو یه لیست باکس رو جمع میکنه
با خاصیت list میتوته /ایتم مورد نظر رو بخونی
متلا کد زیر آیتم دوم رو میخون
K = list1.list(1)x

ارسال شده: جمعه ۲۰ مهر ۱۳۸۶, ۱۰:۱۲ ب.ظ
توسط aminjan
ببخشید دو بار شد!

ارسال شده: شنبه ۲۱ مهر ۱۳۸۶, ۱۰:۲۷ ق.ظ
توسط Present
با تشکر از امين جان
کسي راه حلي براي جمع دو عدد 50 رقمي نداره
با آرايه ميشه اما بر عکس به دست مياد که که از برعکس کردنش ارور ميگيره
يعني جمع را جواب ميده ولي اما وقتي عدد carry را ميخام باهاش جمه کنم براي عدد که انديس آرايه 0 است مشکل دارم
اونم به خاطر اينکه بايد هر عدد که ميخاد با عدد carry جمع شودبايد شماره ارايه يکي پايين تر باشه

ارسال شده: یک‌شنبه ۲۲ مهر ۱۳۸۶, ۱۱:۴۷ ق.ظ
توسط Present
کسي نيست جواب بده يا راهنمايي کند

ارسال شده: یک‌شنبه ۲۲ مهر ۱۳۸۶, ۱۲:۵۹ ب.ظ
توسط dewdrop
morteza_1234m جان ،

كدي رو كه نوشتي ممكنه اينجا قرار بدي . حالا اصلا درست يا غلط بودنش هم زياد مهم نيست فقط ميخوام اگر تونستم رو كد خودت debug كنم .

اميدوارم بتونم بهت كمك كنم..... :-)

ارسال شده: سه‌شنبه ۲۴ مهر ۱۳۸۶, ۱۰:۲۷ ق.ظ
توسط Present
خودم نوشتم ولي با متغيرهاش مشکل دارم
Dim result As String, result1() As String, int1 As String, int2 As String



intnum1 = Len(Text1.Text)
intnum2 = Len(Text1.Text)
txt1 = Text1.Text
txt2 = Text2.Text
carry = 0
result = ""
For i = 1 To intnum1
int1 = Val(txt1) Mod 10
txt1 = Val(txt1) \ 10
int2 = Val(txt2) Mod 10
txt2 = Val(txt2) \ 10
If Val(int1) + Val(int2) + Val(carry) < 10 Then
result = result + Str(Val(int1) + Val(int2) + Val(carry))
carry = ""
Else
result = result + Str((Val(int1) + Val(int2) + Val(carry)) Mod 10)
carry = (Val(int1) + Val(int2) + Val(carry)) \ 10
End If
Next i

intnum3 = Len(Text1.Text)
While intnum3 > 0
ReDim result1(intnum3) As String
result1(intnum3) = (Str(Val(result)) Mod 10)
Label1.Caption = Label1.Caption + result1(intnum3)
result = (Str(Val(result)) \ 10)




intnum3 = intnum3 - 1
Wend





End Sub

ارسال شده: سه‌شنبه ۲۴ مهر ۱۳۸۶, ۱۰:۲۸ ق.ظ
توسط Present
ارور OverFlow ميده

ارسال شده: چهارشنبه ۲۵ مهر ۱۳۸۶, ۱:۰۷ ق.ظ
توسط dewdrop
دوست عزيز ،

debug اون قسمت برنامه رو ميشه با اين كد حل كرد ، يعني اگر شما اين كد رو :

Please Login or Register to see this code

جاي گزين اين قسمت كنيد

Please Login or Register to see this code

ارور اين قسمت از بين ميره . ولي باز رو برنامتون كار كنيد چون جواب نميده و اين ارور رو در قسمت آخر باز ميبينيد .

تو قسمت آخر بررسي كنيد ببينيد از راه ديگه اي هم ميشه رفت. :shock:

ارسال شده: چهارشنبه ۲۵ مهر ۱۳۸۶, ۱:۲۹ ق.ظ
توسط dewdrop
در ضمن من اين برنامه رو براتون نوشتم ولي يه باگ داره كه شما اين باگ رو برطرف كنيد اگر براتون ممكن . واين طوري فرض كردم كه هر دو عدد هم طول هستند.

Please Login or Register to see this code

توي جواب.... :-o

ارسال شده: چهارشنبه ۲۵ مهر ۱۳۸۶, ۸:۱۳ ق.ظ
توسط Present
بله خودم قبلا کد شما را نوشتم ولي متاسفانه استاد محترم از اينجاي کد ايراد گرفت و مجبور اين کار شدم
ولي باعث تعجب هست که چرا يک متغير رشته اي ميتونه بيشتر از 10 کاراکتر را ذخيره منه؟

ارسال شده: چهارشنبه ۲۵ مهر ۱۳۸۶, ۸:۲۶ ق.ظ
توسط Present
ولي باعث تعجب هست که چرا يک متغير رشته اي نميتونه بيشتر از 10 کاراکتر را ذخيره منه؟