1. c語言 在用廣度優先求最短路徑怎麼記錄路徑,求代碼
幾乎所有的數據結構書都有的
2. 數控車床C軸的使用,寶元數控。
建議去查下相關說明書。主軸分度的指令,因系統而異。。有的系統是M0000 後面的4個零 可以輸入度數,比如180度 就是M0180。這不帶表你那個系統也是這樣,要看你是什麼系統,然後看下說明書就知道了。
3. C語言如何實現5個城市之間求最短路徑。 從A出發,最終回到A。 求最短路徑問題。 可用窮舉來完成。
//這個演算法名字叫迪傑斯特拉演算法
#include<stdio.h>
#include<stdlib.h>
#definemax11000000000
inta[1000][1000];
intd[1000];//d表示某特定邊距離
intp[1000];//p表示永久邊距離
inti,j,k;
intm;//m代表邊數
intn;//n代表點數
intmain()
{
scanf("%d%d",&n,&m);
intmin1;
intx,y,z;
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&z);
a[x][y]=z;
a[y][x]=z;
}
for(i=1;i<=n;i++)
d[i]=max1;
d[1]=0;
for(i=1;i<=n;i++)
{
min1=max1;
for(j=1;j<=n;j++)
if(!p[j]&&d[j]<min1)
{
min1=d[j];
k=j;
}
p[k]=j;
for(j=1;j<=n;j++)
if(a[k][j]!=0&&!p[j]&&d[j]>d[k]+a[k][j])
d[j]=d[k]+a[k][j];
}
for(i=1;i<n;i++)
printf("%d->",p[i]);
printf("%d ",p[n]);
return0;
}
4. 怎麼用c語言實現單源最短路徑問題要求是用Dijkstra演算法,最好寫出所有的代碼 ,包括結構定義等等,對一
C語言代碼://清華大學出版社光碟的代碼
void ShortestPath_DIJ(MGraph G,int v0,PathMatrix &P,ShortPathTable &D)
{ // 演算法7.15
// 用Dijkstra演算法求有向網G的v0頂點到其餘頂點v的最短路徑P[v]
// 及其帶權長度D[v]。
// 若P[v][w]為TRUE,則w是從v0到v當前求得最短路徑上的頂點。
// final[v]為TRUE當且僅當v∈S,即已經求得從v0到v的最短路徑。
int i=0,j, v,w,min;
bool final[MAX_VERTEX_NUM];
for (v=0; v<G.vexnum; ++v) {
final[v] = FALSE;
D[v] = G.arcs[v0][v].adj;
for (w=0; w<G.vexnum; ++w) P[v][w] = FALSE; // 設空路徑
if (D[v] < INFINITY) { P[v][v0] = TRUE; P[v][v] = TRUE; }
}
D[v0] = 0; final[v0] = TRUE; // 初始化,v0頂點屬於S集
//--- 開始主循環,每次求得v0到某個v頂點的最短路徑,並加v到S集 ---
for (i=1; i<G.vexnum; ++i) { // 其餘G.vexnum-1個頂點
min = INFINITY; // 當前所知離v0頂點的最近距離
for (w=0; w<G.vexnum; ++w)
if (!final[w]) // w頂點在V-S中
if (D[w]<min) { v = w; min = D[w]; } // w頂點離v0頂點更近
final[v] = TRUE; // 離v0頂點最近的v加入S集
for (w=0; w<G.vexnum; ++w) // 更新當前最短路徑及距離
if (!final[w] && (min+G.arcs[v][w].adj<D[w])) {
// 修改D[w]和P[w], w∈V-S
D[w] = min + G.arcs[v][w].adj;
for(j=0;j<G.vexnum;j++) P[w][j] = P[v][j]; //第v行賦值於第w行
P[w][w] = TRUE; // P[w] = P[v]+[w]
}//if
}//for
} // ShortestPath_DIJ
5. 給出坐標的幾點之間的最短路徑問題 用C語言解 求高手幫忙
最笨的枚舉法,先算第一個點距離剩下點的最短路徑,然後把第一點排除最外求剩下點最短,循環直到剩下兩點。
#include <stdio.h>
#include <stdlib.h>
#define N 10
//返回最短距離的平方,兩個點下標分別存在index1和index2中
//x為所有點x坐標數組,y為所有點y坐標數組,n為個數
int getShortest(int *x,int *y,int n,int& index1,int& index2);
int main(int argc, char **argv)
{
int x[10]={11,3,5,7,1,10,17,18,19,20};
int y[10]={0};
int index1,index2;
printf("%d %d %d \n",getShortest(x,y,10,index1,index2),index1,index2);
return 0;
}
/*
* 簡要描述:先找出離第一個點最近的點,再把第一個點排除在外,
* 求剩餘n-1個點中最近距離,遞推直到剩下兩個點,演算法結束
*
*
* */
int getShortest(int *x,int *y,int n,int &minP1,int &minP2)
{
int *px,*py,*currX,*currY;
int minX,minY;
//當前點與第一個點之間的坐標差值
minX = abs(*(x+1) - *x);
minY = abs(*(y+1) - *y);
//坐標差值絕對值
int absX,absY;
//最短距離平方
long minLen2 ;
long currLen2;
//當前兩點的索引
int *endIndex=x+1;
int *beginIndex=x;
for (px=x,py=y;px<x+n-1;px++,py++)
{
currX = px+1;
currY = py+1;
minLen2 = minX*minX+minY*minY;
while (currX<x+n)
{
absX = abs(*currX-*px);
absY = abs(*currY-*py);
/*比較大小*/
//x,y方向距離都比最小的小,無須計算
if (absX<minX&&absY<minY)
{
minX = absX;
minY = absY;
endIndex = currX;
beginIndex = px;
}
//x,y方向距離一個大一個小,計算平方比較
else if ((absX<minX&&absX>minY)||(absX<minX&&absX>minY))
{
currLen2 = (absX*absX+absY*absY);
if (minLen2>currLen2)
{
minLen2 = currLen2;
minX = absX;
minY = absY;
endIndex = currX;
beginIndex = px;
}
}
currX++;
currY++;
}
}
minP1 = beginIndex - x;
minP2 = endIndex - x;
return minLen2;
}
6. G04是什麼指令
G04是數控加工技術指令中的暫停指令。
G04 X(U)__或 G04 P__。
其中:X、U後是指定暫停時間,其後數值要帶小數點,否則以此數值的千分之一計算,單位為s;
P為指定時間,不允許有小數點(即以整數表示),單位為ms。
(6)增量C軸依最短距離回零用什麼代碼擴展閱讀
FANUC 0-TD系統G 代碼命令代碼組及其含義「模態代碼」 和 「一般」 代碼「形式代碼」 的功能在它被執行後會繼續維持,而 「一般代碼」 僅僅在收到該命令時起作用。
定義移動的代碼通常是「模態代碼」,像直線、圓弧和循環代碼。反之,像原點返回代碼就叫「一般代碼」。每一個代碼都歸屬其各自的代碼組。在「模態代碼」里,當前的代碼會被載入的同組代碼替換。
參考資料來源:網路-G04
7. 用c語言實現尋找最短距離的問題,照片是個例子,問題就是從x城市到y城市,如何給出最短距離的路線,這
單源最短路徑問題,用Dijkstra演算法求解。圖的存儲結構,有鄰接矩陣和鄰接表兩種,鄰接矩陣佔用空間大,但是使用方便。這里就說一下鄰接矩陣:
structGraph{
intmatrix[N][N];
inte;
};
N表示頂點數,就這幅圖而言是5,e表示邊數。matrix存儲了頂點之間的距離,比如matrix[0][1]表示頂點0到頂點1之間的距離。matrix[n][n]表示一個頂點到它自己的距離,這個應當設為0。另外,若兩個頂點之間沒有邊,應該用一個值(可以是負數)來標識它,這兩項操作,應該在圖的初始化時進行。
創建圖之後,首先要輸入邊數,然後輸入每條邊的起點、終點和長度,來給數組matrix賦值。
然後就是使用演算法了。
參考:http://www.cnblogs.com/dolphin0520/archive/2011/08/26/2155202.html
8. 發那科數控編碼器增量式編碼器是如何發出回零到位信號的呢
FANUC 系統中增量式編碼器是有擋塊返回參考點模式,它的回零信號是回零操作時機械撞到回零擋塊後減速,同時編碼器檢測到軸轉動一轉標志位信號,把這個信號傳到CNC,使系統確認回零。
9. 數控新代系統調c軸用什麼代碼
首先要確定帶不帶C軸功能,一般的2軸車是沒有C軸功能的。 如果確定有C軸功能,一般為M19,或者M40切換C軸
10. c語言求點到線段最短距離的這兩句代碼是是什麼意思
k=(p2.y-p1.y)/(p2.x-p1.x); 已知線段的斜率。就是 (y2-y1) / (x2-x1) ,點2與點1的 y 坐標之差,除以點2與點1的 x 坐標之差。
q.y 是某點的y坐標, q.x 是某點的x坐標
s.x 是 垂足 的 x 坐標,s.y 垂足 的 y 坐標
距離 = sqrt( (q.y-s.y) * (q.y-s.y) + (q.x-s.x) * (q.x-s.x));