نمایش نتایج: از شماره 1 تا 5 , از مجموع 5

موضوع: مشکل در اجرای کد ماکرو دیجسترا در اکسل

  1. #1

    آخرین بازدید
    2017/11/25
    تاریخ عضویت
    August 2017
    نوشته ها
    4
    امتیاز
    10
    سپاس
    0
    سپاس شده
    0 در 0 پست
    تعیین سطح نشده است

    مشکل در اجرای کد ماکرو دیجسترا در اکسل

    سلام و وقت بخیر
    من یه کد آماده از سایت rosettacode.org/wiki/User:Klever#Dijkstra_algorithm دارم که نمیتونم توی اکسل اجراش کنم؛کسی میتونه کمکم کنه که چرا اجرا نمیشه؟
    هیچ خطایی هم نمیده ولی خروجی هم نداره :|
    ممنون

    کد:
    'Dijkstra globals
    Const MaxGraph As Integer = 100 'max. number of nodes in graph
    Const Infinity = 1E+308
    Dim E(1 To MaxGraph, 1 To MaxGraph) As Double  'the edge costs (Infinity if no edge)
    Dim A(1 To MaxGraph) As Double                 'the distances calculated
    Dim P(1 To MaxGraph) As Integer                'the previous/path array
    Dim Q(1 To MaxGraph) As Boolean                'the queue
      
    Public Sub Dijkstra(n, start)
      'simple implementation of Dijkstra's algorithm
      'n = number of nodes in graph
      'start = index of start node
      'init distances A
        For j = 1 To n
          A(j) = Infinity
        Next j
        A(start) = 0
      'init P (path) to "no paths" and Q = set of all nodes
      For j = 1 To n
        Q(j) = True
        P(j) = 0
      Next j
     
      Do While True 'loop will exit! (see below)
      'find node u in Q with smallest distance to start
        dist = Infinity
        For i = 1 To n
          If Q(i) Then
            If A(i) < dist Then
              dist = A(i)
              u = i
            End If
          End If
        Next i
        If dist = Infinity Then Exit Do 'no more nodes available - done!
        'remove u from Q
        Q(u) = False
        'loop over neighbors of u that are in Q
        For j = 1 To n
          If Q(j) And E(u, j) <> Infinity Then
            'check if path to neighbor j via u is shorter than current estimated distance to j
            alt = A(u) + E(u, j)
            If alt < A(j) Then
              'yes, replace with new distance and remember "previous" hop on the path
              A(j) = alt
              P(j) = u
            End If
          End If
        Next j
      Loop
    End Sub
     
    Public Function GetPath(source, target) As String
     'reconstruct shortest path from source to target
     'by working backwards from target using the P(revious) array
     Dim path As String
     If P(target) = 0 Then
       GetPath = "No path"
     Else
       path = ""
       u = target
       Do While P(u) > 0
         path = Format$(u) & " " & path
         u = P(u)
       Loop
       GetPath = Format$(source) & " " & path
     End If
    End Function
     
     
    Public Sub DijkstraTest()
    'main function to solve Dijkstra's algorithm and return shortest path between
    'a node and every other node in a digraph
     
    ' define problem:
    ' number of nodes
    n = 5
    ' reset connection/cost per edge
    For i = 1 To n
      For j = 1 To n
        E(i, j) = Infinity
      Next j
      P(i) = 0
    Next i
    ' fill in the edge costs
    E(1, 2) = 10
    E(1, 3) = 50
    E(1, 4) = 65
    E(2, 3) = 30
    E(2, 5) = 4
    E(3, 4) = 20
    E(3, 5) = 44
    E(4, 2) = 70
    E(4, 5) = 23
    E(5, 1) = 6
     
    'Solve it for every node
    
    For v = 1 To n
      Dijkstra n, v
      'Print solution
      Debug.Print "From", "To", "Cost", "Path"
      For j = 1 To n
        If v <> j Then Debug.Print v, j, IIf(A(j) = Infinity, "---", A(j)), GetPath(v, j)
      Next j
      Debug.Print
    Next v
    End Sub
    اخطار: این یک موضوع قدیمی است
    به دلیل قدیمی بودن موضوع، ممکن است برخی فایل های ضمیمه به درستی کار نکنند. لطفا در صورت عدم ضرورت، از بالا آوردن موضوعات قدیمی خودداری نمایید.

  2.  

  3. #2
    mokaram آنلاین نیست.
    مدير تالار اکسل و بانک اطلاعاتی


    محصولات کاربر

    ويدئوي ايجاد سطح دسترسي
    آخرین بازدید
    2023/04/20
    تاریخ عضویت
    February 2011
    محل سکونت
    ســــاوه
    نوشته ها
    1,805
    امتیاز
    6409
    سپاس
    8,099
    سپاس شده
    5,163 در 1,502 پست
    سطح اکسل
    74.00 %

    mokaram به Yahoo ارسال پیام
    شما هدف و خواستتون از اجرای این کد چیه ؟

    می خواید چه کاری را انجام بده براتون ؟یا صرفا کنجکاوید بدونید خروجی این کدها چیه؟


  4. #3

    آخرین بازدید
    2017/11/25
    تاریخ عضویت
    August 2017
    نوشته ها
    4
    امتیاز
    10
    سپاس
    0
    سپاس شده
    0 در 0 پست
    تعیین سطح نشده است

    نقل قول نوشته اصلی توسط mokaram نمایش پست ها
    شما هدف و خواستتون از اجرای این کد چیه ؟

    می خواید چه کاری را انجام بده براتون ؟یا صرفا کنجکاوید بدونید خروجی این کدها چیه؟
    اگر اون لینک رو دیده باشید یه خروجی نشون داده؛میخوام اون خروجی رو توی اکسل نمایش بده.و در مراحل بعدی امکان دریافت ورودی هم داشته باشه.
    در کل میخوام الگوریتم دیجسترا رو اجرا کنم.یسری ورودی به فرمت گراف دریافت کنه و الگوریتم رو روش اجرا کنه.
    جهت کنجکاوی نیست؛برای درسم لام دارم

    ممنون

  5. #4


    آخرین بازدید
    38 دقیقه پیش
    تاریخ عضویت
    September 2013
    محل سکونت
    بچه محل آقا امام رضا
    نوشته ها
    4,472
    امتیاز
    12316
    سپاس
    8,923
    سپاس شده
    10,587 در 3,746 پست
    سطح اکسل
    100.00 %

    نقل قول نوشته اصلی توسط E!LiA نمایش پست ها
    اگر اون لینک رو دیده باشید یه خروجی نشون داده؛میخوام اون خروجی رو توی اکسل نمایش بده.و در مراحل بعدی امکان دریافت ورودی هم داشته باشه.
    در کل میخوام الگوریتم دیجسترا رو اجرا کنم.یسری ورودی به فرمت گراف دریافت کنه و الگوریتم رو روش اجرا کنه.
    جهت کنجکاوی نیست؛برای درسم لام دارم

    ممنون

    سلام
    دوست عزیز این کد خروجی در اکسل نداره. در خط ۱۰۲ و ۱۰۴ این کد اگر دقت کنید نوشته Debug.Print و این بدین معنی هست که در پنجره Immediate خروجی رو نشون میده. برای دیدن خروجی این برنامه در محیط ویژوال بیسیک کلید ترکیبی Ctrl+G رو فشار بدید تا پنجره Immediate نمایش داده بشه. بعد کدتون رو اجرا کنید

  6. سپاس ها (1)


  7. #5

    آخرین بازدید
    2017/11/25
    تاریخ عضویت
    August 2017
    نوشته ها
    4
    امتیاز
    10
    سپاس
    0
    سپاس شده
    0 در 0 پست
    تعیین سطح نشده است

    نقل قول نوشته اصلی توسط Amir Ghasemiyan نمایش پست ها

    سلام
    دوست عزیز این کد خروجی در اکسل نداره. در خط ۱۰۲ و ۱۰۴ این کد اگر دقت کنید نوشته Debug.Print و این بدین معنی هست که در پنجره Immediate خروجی رو نشون میده. برای دیدن خروجی این برنامه در محیط ویژوال بیسیک کلید ترکیبی Ctrl+G رو فشار بدید تا پنجره Immediate نمایش داده بشه. بعد کدتون رو اجرا کنید
    بسیار ممنون.
    راهی هست که بشه توی اکسل پیادش کرد؟و ازش خروجی گرفت؟


اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

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

موضوعات مشابه

  1. پاسخ ها: 0
    آخرين نوشته: 2016/11/01, 08:49
  2. جستجو و پیدا کردن عدد نزدیک به عدد مورد جستجو
    توسط nimavao در انجمن توابع اکسل - Excel Functions
    پاسخ ها: 8
    آخرين نوشته: 2016/01/27, 12:49
  3. توابع جستجو و جمع نمودن جستجو
    توسط ali0062 در انجمن توابع اکسل - Excel Functions
    پاسخ ها: 2
    آخرين نوشته: 2014/03/05, 19:56
  4. سوال در مورد جستجوی آخرین ردیف مورد جستجو
    توسط omidi در انجمن توابع اکسل - Excel Functions
    پاسخ ها: 2
    آخرين نوشته: 2012/02/13, 19:57

بازدید کنندگان با جستجو های زیر این صفحه را پیدا کرده اند

انجمن اكسل ايران , اكسل , اكسس , سوال و جواب اكسل , سوال اكسس , انجمن اكسل ايران , توابع اكسل, آموزش اكسل, آموزش اكسس, VBA, ويژوال بيسيك

علاقه مندی ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  
  • BB code ها فعال هستند
  • شکلک ها فعال هستند
  • کد [IMG] فعال است
  • کد [VIDEO] فعال است
  • کد HTML غیر فعال است