مشکل در آرایه دو بعدی مورب - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

مشکل در آرایه دو بعدی مورب

0 امتیاز

با سلام.

با کمک دوستان این سایت که خیلی ازشون تشکر می کنم، توانستم با زبان vb6 برنامه ی زیر را بنویسم:

Const M = 7
Const N = 5
Dim A(M, N) As Integer
Dim num As Integer
Dim k As Integer

For j = 0 To N - 1
    k = j
    For i = 0 To M
        num = num + 1
        A(i, k) = num
        k = k - 1
        If k < 0 Then Exit For
    Next
Next
 
num = M * N
For j = N - 1 To 0 Step -1
    k = j
    For i = M - 1 To 0 Step -1
        A(i, k) = num
        num = num - 1
        k = k + 1
        If k > N - 1 Then Exit For
    Next
Next
 
For i = 0 To M - 1
    For j = 0 To N - 1
        Print (A(i, j)),
    Next
    Print
    Print
Next

این کد ها اگر m=3 و n=5 خروجی زیر را ایجاد می کند:

1 2 4 7 10
3 5 8 11 13
6 9 12 14 15

حالا من دو مشکل دارم:

1.اگر نسبت m به n بیشتر باشه، مثلا M=7 و N=5 باشد، وسط خروجی 0 هایی درست می کنه. در صورتی که اگر نسبت N به M بیشتر باشه این مشکل وجود نداره. لطفا برنامه را طوری ویرایش کنید که به جای M و N هر عددی قرار دهم کار کند و آن صفر ها را قرار ندهد.

2.می خواهم برای کد پرینت به جای For i = 0 To M - 1 از For i = 1 To M و همچنین به جای For j = 0 To N - 1 از For j = 1 To N استفاده کنم که نیاز هست اول کد های بالا ویرایش شود.

 لطفا برنامه را طوری ویرایش کنید که به جای M و N هر عددی قرار دهم کار کند و آن صفر ها را قرار ندهد. همچنین در صورت امکان for ها به جای اینکه از 0 شروع شوند از 1 شروع شوند که با برنامه سازگار باشد. البته خود آرایه A باید از 0 شروع شود که الان هم همینطور است.

 

با تشکر.

سوال شده دی 7, 1392  بوسیله ی mahdi.manian (امتیاز 56)   3 8 12
دوباره تگ گذاری شد بهمن 22, 1392 بوسیله ی BlueBlade

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

داخل همون کد  قبل یک For دیگه هست اون رو یادت رفته بزاری این For  باید وقتایی اجرا بشه که m از n بیشتر باشه و m فرد باشه یعنی 1 If هم قبلش لازم داره

 

 

        Dim ii As Integer
        ii = 0
        For i = 5 To 0 Step -1
            a(i, ii) = num
            num = num - 1
            ii = ii + 1
        Next

 

برای این که از 1 شروع بشن  تمام for ها و if ها رو 1 واحد به عددشون اضافه کن

پاسخ داده شده دی 8, 1392 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
انتخاب شد دی 9, 1392 بوسیله ی mahdi.manian
ممنون ازتون این کار را انجام دادم ولی برنامه بهم میریزه و درست کار نمی کنه. امکانش هست کد ها را ادیت کنید و ادیت شده اش را قرار بدید؟برای هر دو مشکل؟ ممنون.
ببخشید کد را امتحان کردم قبلا کار می کرد ولی الان دیگه اصلا کار نمی کنه! میشه کد اول را تصحیح کنید؟ ممنون.
...