ورود

View Full Version : matris



tehrany
پنج شنبه 09 تیر 1384, 13:27 عصر
salam
mikhastam komakam konid
mozo marbot be algoritm dijestra ast ke mikhastam satr va soton on ra az vorody daryaft konam va sepas baraye matris meghdar daryaft konam ta betavanam amaliat roye on anjam daham :flower: lotf konid javab ra be in address mail bezanid
zahra_2631@yahoo.com
mamnonam :oops:

sasan_vm
پنج شنبه 09 تیر 1384, 18:23 عصر
سلام
فکر می کنم آنچه در مورد ماتریکس لازم دارید در این Pakage است + مثال :wink:

tehrany
جمعه 10 تیر 1384, 13:44 عصر
جناب آقای sasan vm سلام

از اینکه به سوالم جواب دادید کمال تشکررا دارم
من فایلی را که فرستاده بودید قبلآ بررسی کردم اما نتیجه ای نگرفتم میخواستم در صورتی که می توانید بیشتر راهنمایی ام کنید
عنوان برنامه به این صورت است که الگوریتم دایجسترا را طوری پیاده سازی کنید که برای n<=10 که خودمان این مقدار را وارد می کنیم بتواند وزن روی یالها را در این ماترسی ذخیره کرده وبا دادن راس مبدا ومقصد بتواند کمترین فاصله میان این دو راس را تعیین کند وهمچنین راس مبدا ومقصد را نیز کاربر باید تعیین کند.
برنامه را نیز فرستادم تا اگر می توانید کمکم کنید تا این تغییرات را روی آن اعمال کنم
(در اینجا راس مبدا s و راس مقصد t خواهد بود)
با تشکر از توجه شما
. #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];
}