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

در اين بخش مي‌توانيد به مباحث مربوط به انواع زبان هاي برنامه نويسي بپردازيد

مدیران انجمن: athlon64x2, abbas.m.k, شوراي نظارت

Major I
Major I
نمایه کاربر
پست: 390
تاریخ عضویت: یک شنبه 20 اسفند 1385, 10:35 pm
سپاس‌های دریافتی: 24 بار

پست توسط درودبرايران » چهار شنبه 25 مهر 1386, 11:17 am

چرا برنامۀ به اين سادگي رو اينقدر پيچ در پيچ کردين! یکی از منابع خطاي overflow بوضوح دستور Val هست چون خروجي اين دستور double هست و اگه شما عددي بزرگ رو بهش بدين OverflowException برميگردونه. در ضمن استفاده از رشته به اين شکل بنظرم درست نمياد. البته من VB خيلي وقته کار نکردم (از زمان VB5 خدابيامرز!) ولي اون پاسکاله که چون رشته هاش آرايه اي از بايت هستن استفاده از رشته براي اينکار مناسبه. البته C که حرف نداره براي اينکار.
بهر حال برنامۀ زير رو توي VB 2005 نوشتم و براي تمام حالاتي که امتحان مردم کار مي کنه:

کد: انتخاب همه

        Dim txt1, txt2 As String
        Dim maxLength, length1, length2, i, carry, byteSum As Integer
        txt1 = TextBox1.Text
        txt2 = TextBox2.Text
        length1 = Len(txt1)
        length2 = Len(txt2)

        maxLength = length1
        If maxLength < length2 Then maxLength = length2
        Dim num1(maxLength), num2(maxLength), result(maxLength) As Byte

        For i = 0 To length1 - 1
            num1(i) = Val(Mid(txt1, length1 - i, 1))
        Next i
        For i = 0 To length2 - 1
            num2(i) = Val(Mid(txt2, length2 - i, 1))
        Next i

        For i = 0 To maxLength
            byteSum = num1(i) + num2(i) + carry
            result(maxLength - i) = byteSum Mod 10
            carry = byteSum \ 10
        Next i


جواب نهایی یک آرایه از بایت هست (با ترتیب صحیح) که اگه خواستین براحتی به رشته تبدیل میشه. در ضمن من Exception Handling نکردم ولی شما برای برنامتون بهتره بکار ببرین.

:-D
بايد امشب بروم...

ارسال پست

بازگشت به “برنامه نويسي”