1033:计算线段长度
1033:計算線段長度
時間限制: 1000 ms 內存限制: 65536 KB【題目描述】
已知線段的兩個端點的坐標A(Xa,Ya),B(Xb,Yb),求線段AB的長度,保留到小數點后3位。【輸入】
第一行是兩個實數Xa,Ya,即A的坐標。第二行是兩個實數Xb,Yb,即B的坐標。輸入中所有實數的絕對值均不超過10000。【輸出】
一個實數,即線段AB的長度,保留到小數點后3位。【輸入樣例】
1 12 2【輸出樣例】
1.414說明:
主要考查基礎的坐標問題。
可以使用勾股定理來解決本題,涉及到坐標和勾股定理的知識點。
這是一個直角三角形,A、B、C代表三條邊的長度,邊C肯定比邊A和邊B長。對于直角三角形,有這樣的一個公式:
A2+B2=C2
這就是勾股定理。
在這里,其中箭頭向右的稱為橫軸(x軸),箭頭向上的稱為縱軸(y軸),x軸和y軸相交的點稱為原點。
x軸和y軸從原點開始(0),往右和往上逐漸增加。
x軸某個點向上延長,y軸某個點向右延長,那么x軸和y軸存在相交的點(交點),該點稱為坐標,用(x, y)來描述。其中x稱為x坐標,y稱為y坐標。
例如x軸刻度1向上延長,y軸刻度2向右延長,那么它們的交點為(1, 2)。
根據題意畫出一個坐標系,如下圖:
圖片
一條直線的兩端各有一個坐標點,要求這條直線(邊)的長度,可以從這兩個坐標點向右向下延長(如上圖的虛線),從而構成一個直角三角形。
其中,坐標(Xb, Yb)和坐標(Xa, Ya)是已知直線(邊C)的兩個端點,用延長線的方法,可以得出邊A和邊B的交點坐標為(Xa, Yb)。
Xb至Xa的最短距離為Xa-Xb,即邊B的長度。
Ya至Yb的最短距離為Ya-Yb,即邊A的長度。
根據勾股定理,已知兩條邊的長度,就可以求出第三條邊的長度。即:
A2+B2=C2
C=√(A2+B2)
√是平方根號,例如√(A2)的結果為A,√4的結果為2。
在C/C++用sqrt函數來表示開平方。例如sqrt(4)的值為2。
函數原型:
double sqrt(double x);
所在頭文件:
C語言:<math.h>
C++:<cmath
思路分析:
已知輸入兩個坐標點,分別是(Xa, Ya)和(Xb, Yb),根據上述的講述,求出另外兩條直角邊A和B。
double A = Ya - Yb;
double B = Xa - Xb;
得出邊A和B后,再根據勾股定理求出邊C。
double C = sqrt(A * A + B * B)
如果存在負數的坐標點也是沒有問題的。例如A的為-2,那么-22的值為4,即(-2)×(-2)=4。
如果Xa和Xb是一正一負也是一樣,例如Xa=-2,Xb=2,-2-2=-4。Ya=2,Yb=-2,2-(-2)=4。所以結果都是一樣的。
求解過程:
聲明三個double類型變量A、B、C,分別代表三條邊,要求C這條邊。再聲明兩個坐標點所需的4個變量,分別是Xa、Ya、Xb、Yb。
輸入兩個坐標點的值(4個變量)。
根據公式求出邊A和邊B的長度。
根據勾股定理求出邊C的長度。
輸出邊C
參考代碼 - C++:
#include <iostream> #include <iomanip> #include <cmath> using namespace std; int main() {double Xa, Ya, Xb, Yb;cin >> Xa >> Ya >> Xb >> Yb;double A = Xa - Xb; // 求出邊A的長度double B = Ya - Yb; // 求出邊B的長度// 根據勾股定理求出邊C的長度double C = sqrt(A * A + B * B);cout << fixed << setprecision(3) << C;return 0; }參考代碼 - C語言:
#include <stdio.h>
#include <math.h>
int main()
總結
以上是生活随笔為你收集整理的1033:计算线段长度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 消防应急通讯平台设计
- 下一篇: 2015062801 - 祈福八仙水上