距離編程代碼
『壹』 如何用c語言計算兩點之間距離
用C語言計算兩點之間距離的參考代碼:
#include <stdio.h>
#include <stdlib.h>
#include "math.h"
typedef struct point {
double x;
double y;
}point;
point array[30001];
double distance(point a,point b);
int main(int argc, char *argv[])
{
while(1){
int n,i,j,count;
double maxdis,temp;
scanf("%d",&n);
for(i = 0;i<n;i++){
scanf("%f %f",&array[i].x,&array[i].y);
}
for(i = 0;i<n;i++){
//printf("%d %d ",array[i].x,array[i].y);
//printf("dis:%.2f ",distance(array[0],array[i]));
}
maxdis = 0.0;
for(i = 0;i<n;i++){
for(j = i;j<n;j++){
if(distance((array[i]),(array[j])) > maxdis ){
//printf("maxdis = :%.2f ",distance((array[i]),(array[j])));
maxdis =distance((array[i]),(array[j]));
}
}
}
printf("%.2f",maxdis);
}
system("pause");
return 0;
}
//計算x y之間距離
double distance(point a,point b){
return sqrt( (a.x - b.x)*(a.x - b.x) + (a.y -b.y)*(a.y -b.y) );
}
(1)距離編程代碼擴展閱讀:
C語言編寫注意事項:
1、所有自定義變數必須聲明才能使用。
2、每行只書寫一條語句, 在運算符兩邊加上一個空格, 便於閱讀。
3、整數除法將自動舍位, 不會進行四捨五入的操作。
4、for(初始化部分;條件部分;增長部分) - 比while 更適用於初始化和增長步長都是單條語句情況下。
5、使用#define 名字 替換文本 對部分"幻數" 賦予意義便於閱讀 #define結尾不需要「;」號結束。
『貳』 python編程題:編程求兩點之間的曼哈頓距離
def My_abs(num):
if num < 0:
num *= -1
return num
print(abs(-5))
x1,y1=eval(input("輸入A點坐標,以逗號分隔:"))
x2,y2=eval(input("輸入B點坐標,以逗號分隔:"))
# 計算曼哈頓距離的函數
def getManhattanDistance(x1, y1, x2, y2):
return My_abs(x1 - x2) + My_abs(y1 - y2)
# 調用並輸出計算的曼哈頓距離
print(getManhattanDistance(x1, y1, x2, y2))
abs在Python中有了,然後我就命名成了My_abs。
備注也都打好了。
折柳成蔭寫的是C,soulofbug寫的是python
『叄』 卡西毆5800計算器方位角及距離編輯程序代碼
設A點坐標(XA, YA),B點坐標(XB, YB),A點到B點距離l,A點到B點方位角aAB,則:
XB=XA+lcosaAB
YB=YA+lsinaAB
l=根號 (XB-XA)²+(YB-YA)²
當(YB-YA)≥0時,aAB=cos-1(XB-XA)/l
當(YB-YA)<0時,aAB=360- cos-1(XB-XA)/l
在卡西歐計算器中可以用「Rec」和「pol」功能鍵完成,方法如下:
正算Rec(l,aAB),顯示X增量「I」,Y增量「J」
XB=XA+I,YB=YA+J
反算pol(XB-XA,YB-YA),顯示距離l「I」,方位角aAB「J」,當J<0時J=J+360
『肆』 誰能提供,點到直線的距離公式 C語言程序
設點(x0,y0) ,直線為ax+by+c=0
則距離為fabs(ax0+by0+c)/sqrt(a*a+b*b)
前提是在文件前面加上#include <math.h>
『伍』 用C語言編寫一個程序,求兩點之間的距離
#include<stdio.h>
#include<math.h>
int main()
{
double x1,y1,x2,y2,distance;
printf("請輸入第一個點的坐標:\nx1=");
scanf("%lf",&x1);
printf("y1=");
scanf("%lf",&y1);
printf("請輸入第二個點的坐標:\nx2=");
scanf("%lf",&x2);
printf("y2=");
scanf("%lf",&y2);
distance=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
printf("這兩點間的距離為:%lf\n",distance);
return 0;
}
『陸』 兩數組最短距離 一道編程題解不出。。求思路或者代碼
#include<iostream>
usingnamespacestd;
#defineM100
voidSearch()
{
intf[M],g[M],min[M][M],m,n;
cout<<"分別輸入兩數組的長度(100以內):"<<endl;
cin>>m>>n;
while(m<=0||m>M||n<=0||n>M)
{
cout<<"輸入有誤,重新輸入:"<<endl;
cin>>m>>n;
}
inti,j,Min;
cout<<"輸入數組f(長度為"<<m<<"):"<<endl;
for(i=0;i<m;i++)
cin>>f[i];
cout<<"輸入數組g(長度為"<<n<<"):"<<endl;
for(i=0;i<n;i++)
cin>>g[i];
for(i=0;i<m;i++)
for(j=0;j<n;j++)
min[i][j]=(f[i]-g[j]>=0)?f[i]-g[j]:g[j]-f[i];
Min=min[0][0];
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
if(min[i][j]<Min)
Min=min[i][j];
}
cout<<"兩數組的距離為:"<<Min<<endl;
}
intmain()
{
Search();
return0;
}
『柒』 C語言編程問題:使用函數計算兩點間的距離。
輸入兩點坐標(X1,Y1),(X2,Y2),計算並輸出兩點間的距離。
輸入數據有多組,每組佔一行,由4個實數組成,分別表示x1,y1,x2,y2,數據之間用空格隔開。
#include<stdio.h>
#include<math.h>
void main()
{
float x1,x2,y1,y2;
printf("請輸入一組數據:");
while(~scanf("%f%f%f%f",&x1,&y1,&x2,&y2))//開始讀取輸入的數,知道文件結束。
{
printf("兩點間的距離為:%.2f ",sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)));
printf("請輸入一組數據:");
}
}
(7)距離編程代碼擴展閱讀:
c語言基本運算
一:算術運算符
算術運算符非常地簡單,就是小學數學裡面的一些加減乘除操作。不過呢,還是有一些語法細節需要注意的。
一、加法運算符+
int a=10;
(此處空一行)
int b=a+5;
在第3行利用加法運算符+進行了加法運算,再將和賦值給了變數b,最終變數b的值是15
二、減法運算符或負值運算符-
int b=10-5;
(此處空一行)
int a=-10;
1、在第1行利用減法運算符-進行了減法運算,再將差賦值給了變數b,最終變數b的值是5
2、在第3行中,這個-並不是什麼減法運算符,而算是一個負值運算符,-10代表的是負十
三、乘法運算符*
int b=10*5;
注意:乘法運算符並不是x或者X,而是星號*。變數b最終的值是50。
四、除法運算符/
double a=10.0/4;
double b=10/4;
(此處空一行)
printf("a=%f,b=%f ",a,b);
注意:除法運算符並不是÷,而是一個正斜杠/
『捌』 已知三十個地區的經緯度,用matlab怎麼編程求出這三十個地區兩兩之間的距離,會的幫忙編下程序代碼
直接用MATLAB地圖工具箱(Mapping Toolbox)的distance函數就可以了,例如(為方便舉例,這里只設置了4個點,30個點同樣處理):
%已知各點的經緯度(依次為京滬津渝四地)
pts=[...
116.4639.92;
121.4831.22;
117.2039.13;
106.5429.59
];
%形成兩兩之間對應的矩陣(對稱陣,可以只看上三角或下三角)
[LA1,LA2]=meshgrid(pts(:,2));
[LO1,LO2]=meshgrid(pts(:,1));
%計算兩兩之間的距離,單位為公里
R=distance(LA1,LO1,LA2,LO2,almanac('earth','wgs84'));
這里地球模型是採用的WGS84參考橢球,也可以改用其它參考橢球,具體可參考almanac函數。
得到的結果為
>>num2str(R,'%10.2f')
ans=
0.001066.68108.361460.16
1066.680.00959.951445.81
108.36959.950.001440.61
1460.161445.811440.610.00