تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 4 از 4

نام تاپيک: براي آموزش آرايه ها

  1. #1
    پروفشنال
    تاريخ عضويت
    Jan 2009
    پست ها
    945

    11 براي آموزش آرايه ها

    سلام لطفاً يه چندتا مثال درمورد مرتب سازي آزايه ها ، مرتب سازي دودويي بزنيد بهمراه توضيحات لطفاً


    فصل 2 برنامه سازي 2 ، آرايه ها هست كه من يكم در اين فصل مشكل دارم هفته بعد ميخواد استاد امتحان بگيره ممنون ميشم كمكم كنيد.

  2. #2
    پروفشنال
    تاريخ عضويت
    May 2008
    محل سكونت
    Kurdistan
    پست ها
    855

    پيش فرض

    خب من مرتب سازی آرایه به روش صعودی که بهش حبابی و Bobble Sort هم میگن رو توضیح میدم که امیدوارم بدردتون بخوره :

    5|10|2|14|12

    اگه شما این اعداد بالا رو خانه های a(4) در نظر بگیرید , خانه ها ی آرایه a بصورت زیر هستند:

    a(0) = 12
    a(1) = 14
    a(2) = 2
    a(3) = 10
    a(4) = 5

    خب برای اینکه این آرایه رو بصورت صعودی ( حبابی ، Bobble Sort ) مرتب سازی کنید کارهای زیر رو انجام بدید :

    مرحله 1- اولین خانه ی آرایه را با دومین خانه آن مقایسه میکنید ( ! )
    الف ) اگر خانه ی آول آرایه از خانه ی دوم کوچکتر یا مساوی بود برنامه کاری انجام ندهد . ( یعنی اگه a(0) که برابر 12 هست رو با a(1) مقایسه کنیم نتیجه میگیریمa(0) < a(1) ... پس برنامه کاری انجام نمیده )
    ب ) اگر خانه ی اول آرایه از خانه ی دوم بزرگتر بود جای آن ها را عوض می کنیم . ( حالا که ما فهمیدیم a(0( از a(1) کوچکتر هست پس دیگه برنامه این قسمت رو انجام نمیده و میره به مرحله دو)

    مرحله 2- مرحله ی یک را برای خانه های دوم و سوم تکرار می کنیم .
    (یعنی در این روش a(1) رو با a(2) مقایسه میکنیم که نتیجه میگیریم a(1) > a(2) هست ... پس قسمت ب انجام میشه ... یعنی a(1) جاش رو با a(2) عوض میکنه )

    و برای سایر خانه ها هم به همین روش ( ! )

    خب این از توضیح فارسی ...

    اگه بخواید کد نویسی کنید ، باید یک Command Button ایجاد کنید و کدهای زیر رو داخلش بنویسید :

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


    امیدوارم بدردتون خورده باشه ( ! )

  3. این کاربر از M i L @ D بخاطر این مطلب مفید تشکر کرده است


  4. #3
    پروفشنال VBYOFSKI's Avatar
    تاريخ عضويت
    Jul 2008
    محل سكونت
    تهرانسر
    پست ها
    832

    پيش فرض

    سلام
    دو روش برای جستجو داریم یکی ترتیبی و اون یکی دودویی.
    ترتیبی:
    این روش خیلی راحت و کنده. باید تمام عناصر آرایه رو از اول با متغیر کلید (مورد جستجو) مقایسه کنیم هر کدوم برابر بود اون جوابه. وای خیلی کنده، مثلا توی یه لیست 1000 نفری، داده مورد نظر ما تو خونه 800 هست اینجوری باید 800 بار تکرار بشه. حالا بستش بده تو 100 هزار نفری .....

    این کدش:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    دودویی:
    این روش یکم پیچیدس ولی خیلی سریعتره و به درده آرایها و لیستهای مرتب شده میخوره. روش کلیش اینجوریه که اول باید عنصر وسط آرایه مرتب شده رو به دست بیاریم (مثلا توی یه آرایه 100 تایی میشه 50) اگه درست بود که هیچ ولی اگه نه باید ببینیم کوچیکتره یا بزرگتر. اگه بزرگتر از اون باشه باید نیمه دوم رو بگردیم (یعنی از 51 تا 100) ولی اگه کوچکتر باشه باید نیمه اول رو بگردیم (یعنی 1 تا 49). روش جستجو نیمه هاهم مثل اولیه یعنی باز باید وسطش رو به دست بیاریم ......

    این توضیح کلی بود حالا کد نویسیش. ( به فرض اینکه آرایه ما مرتب شده)

    اول به چندتا متغیر نیاز داریم:

    Dim a(1 To 100) As Integer
    Dim Low As Integer, High As Integer, Mid As Integer
    Dim KEY As Integer, i As Integer
    Dim CNT As Byte
    Dim Find As Boolean
    آرایهa که لیستیه که توش باید جستجوکنیم.
    متغیر Low , High , Mid هم واسه اینه که بفهمی اول و آخر و وسط آرایه کجاست.
    KEY متغیریه که مورد جستجو رو نگه میداره.
    i اندیس حلقست.

    CNTیه شمارندست واسه اینکه ببینیم چندبار حلقه تکرار شده تا جواب به دست اومده.
    Find مشخص میکنه که به جواب رسیدیم یا نه.

    For i = 1 To 100
    a(i) = i
    Next i

    KEY = Val(InputBox("Enter Your KEY For Find:"))
    تو اینجا اول با یه For آرایه رو پر کردیم.
    بعد با Inputbox مورد جستجو رو گرفتیم.

    Low = 1
    High = 100
    Find = False
    تو این مرحله باید اول و آخر آرایه رو مشخص کنیم. چون اول و آخر آرایه اینجا مشخصه و تغییر نمیکنه اعداد رو دستی وارد کردیم ولی اگه مشخص نیست میتونی از دستور زیر استفاده کنی.

    Low = LBound(a)
    High = UBound(a)
    Find = False
    Lbound و Ubound توابعی هستن که به ترتیب کوچکترین عنصر و بزرگترین عنصر آرایه رو برمیگردونن.

    Do While High >= Low And Find = False
    Mid = (High + Low) \ 2
    If a(Mid) = KEY Then
    Find = True
    ElseIf KEY > a(Mid) Then
    Low = Mid + 1
    Else
    High = Mid - 1
    End If
    CNT = CNT + 1
    Loop
    تمام کار جستجو تو این حلقه اتفاق میوفته.
    شرطی که گزاشتیم اینجوریه که اگه اوله آرایه (که ما مشخص میکنیم کجاست) ازآخر آرایه (اینم ما مشخص میکنیم) بزرگتر نبود و چیزی هم پیدا نشده بود (Find = False) به جستجو ادامه بده.
    تو خط اول باید وسط آرایه رو مشخص کنیم. واسه پیدا کردن وسط یه لیست که اول و آخرشو داریم از این روش استفاده میکنیم. (اینجا حتما باید از تقسیم صحیح استفاده کنیم که عددمون اعشاری در نیاد)

    دستور if برسی میکنه اگه داده درون عنصر وسط با KEY برابر بود که جواب پیدا شده در غیر اینصورت:
    اگه KEY بزرگتر بود باید نیمه دوم رو بگردیم.
    واسه اینکار کافیه اوله آرایه رو بیاریم جلو تر یعنی اوله آرایه باید بشه عدد 51. چون Mid وسط هست بهش یه دونه اضافه میکنیم میشه اوله آرایه.

    اگه KEY کوچکتر بود باید نیمه اول رو بگردیم.
    واسه اینکار کافیه آخر آرایه رو بیاریم عقب تر یعنی آخر آرایه باید بشه عدد 49. چون Mid وسط هست ازش یه دونه کم میکنیم میشه آخر آرایه.

    به CNT یکی اضافه میشه یعنی یه بار جستجو شد.

    حالا اگه دوباره شرط درسط بود جستجو ادامه پیدا میکنه.

    If Find = True Then MsgBox a(Mid) & " ---- " & CNT
    اینجا هم که باید نتیجه و تعدا جستجو رو اعلام کنیم اول باید ببینیم چیزی پیدا شده یا نه. چون Mid همون مکانی هست که
    جواب اونجاست پس داده توی همون عنصر رو نشون میدیم.

    تو این روش واسه پیدا کردن عدد 80 هفت بار جستجو انجام شده ولی تو روش ترتیبی باید 80 بار بگردیم و واسه 26 شش بار ولی توی ترتیبی 26 بار.

    امیدوارم مفید باشه. ولی اگه بازم توش گیر داشتی کنار تمام خطها توی وی بی Brek Point بزار و برنامه رو خط به خط دنبال کن ببین متغیرها چه تغیراتی میکنن راحت همه چی دستت میاد.

  5. #4
    پروفشنال VBYOFSKI's Avatar
    تاريخ عضويت
    Jul 2008
    محل سكونت
    تهرانسر
    پست ها
    832

    پيش فرض

    سلام لطفاً يه چندتا مثال درمورد مرتب سازي آزايه ها ، مرتب سازي دودويي بزنيد بهمراه توضيحات لطفاً


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

  6. این کاربر از VBYOFSKI بخاطر این مطلب مفید تشکر کرده است


Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •