PDA

View Full Version : نیاز فوری به تغییرات در برنامه دایجسترا دارم



tehrany
سه شنبه 14 تیر 1384, 13:28 عصر
سلام
لطف کنید کمکم کنید
در برنامه دایجسترا می خواستم که عددی را به عنوان سطر وستون وارد کنم و سپس به اندازه آن ورودی داشته باشم وسپس روی آن عملیات انجام دهم
لطف کنید کمکم کنید
#include<stdio.h>
#include<conio.h>
#define infinity 100
#define member 1
#define nomember 0
#define m 5
void shortest(int w[][m],int s,int t,int *pd);
int main()
{
int w[m][m]={{100,7,4,6,1},
{100,100,100,100,100},
{100,2,100,5,100},
{100,3,100,100,100},
{100,100,100,1,100}};
int pd,s=3,t=1;
clrscr();
shortest(w,s,t,&pd);
printf("source is %d,destination is %d\n",s,t);
printf("lenghth of shortest path is :%d",pd);
getch();
return (0);
};


void shortest(int w[][m],int s,int t,int *pd)
{
int distance[m],found[m];
int curent,i,k,dc;
int smalldist,newdist;
//initialization
for(i=0;i<m;i++)
{
found[i]=nomember;
distance[i]=infinity;
}
found[s]=member;
distance[s]=0;
curent=s;
while(curent!=t)
{
smalldist=infinity;
dc=distance[curent];
for(i=0;i<m;i++)
if(found[i]==nomember)
{
newdist=dc+w[curent][i];
if(newdist<distance[i])
distance[i]=newdist;
//determine the small distance
if(distance[i]<smalldist)
{
smalldist=distance[i];
k=i;
}
}
//end of for, if
curent=k;
found[curent]=member;
}
//end of while
*pd=distance[t];
}
می خواستم ماتریس را خودم به همراه سطر وستون وارد کنم همچنین s,t را نیز خودم از ورودی دریافت کنم :cry: :wink: :flower: