Xác định vị trí tương đối giữa điểm M và đường tròn tâm O bán kính R



Đề bài: Viết chương trình nhập vào tọa độ điểm O(xO; yO) là tâm của một đường tròn, và bán kính R. Nhập vào tọa độ điểm M(xM; yM). Hãy xác định điểm M nằm trong, trên hay nằm ngoài đường tròn.
Yêu cầu kiến thức:

  • Xác định chính xác yêu cầu bài toán
  • Xác định đúng kiểu dữ liệu của các biến trong chương trình
  • Vận dụng các xác định vị trí tương đối giữa một điểm và một đường tròn trong toán học
Cơ sở toán học:
Từ 2 điểm C (tâm hình tròn) và điểm M, ta tính được khoảng cách d giữa 2 điểm trên (Xem cách tính). Rồi đem so sánh với bán kính R.

  • Nếu d < R hay (R – d) > 0 thì M nằm trong đường tròn.
  • Nếu d > R hay (R – d) < 0 thì M nằm ngoài đường tròn.
  • Nếu d = R hay (R – d) = 0 thì M nằm trên đường tròn.

Code tham khảo dưới được lưu với phần mở rộng là “.cpp”:


// Ho ten: Hoang Van Tuan
// Website: timoday.edu.vn
// De bai:
/* Bai 2: Xac dinh vi tri tuong doi giua diem M va duong tron tam C ban kinh R */

#include<iostream>
#include<stdio.h>
#include<math.h>

using namespace std;

//===chuong trinh chinh===
int main()
{
    // Khai bao bien
    float xC, yC, R, xM, yM, d;

    // Nhap du lieu
    cout<<"Nhap vao hoanh do diem C: "; cin>>xC;
    cout<<"Nhap vao tung do diem C: "; cin>>yC;

    cout<<"Nhap vao ban kinh: "; cin>>R;

    cout<<"Nhap vao hoanh do diem M: "; cin>>xM;
    cout<<"Nhap vao tung do diem M: "; cin>>yM;

    // Tinh vi tri tung doi
    d = R - sqrt((xM-xC)*(xM-xC) + (yM-yC)*(yM-yC));

    // So sanh vi tri tuong doi
    if(d>0)
    {
        cout<<"M nam trong duong tron!";
    }
    else if(d<0)
    {
        cout<<"M nam ngoai duong tron!";
    }
    else
    {
        cout<<"M nam tren duong tron";
    }

    cout<<endl;
    return 0;
}
//===dinh nghia ham===


Kết luận:

  • Bạn có thể tham khảo thêm khóa học lập trình C từ cơ bản đến nâng cao. Xem tại đây
  • Bạn có thể tham khảo thêm khóa học Thành thạo lập trình C#. Xem tại đây

Có thể bạn sẽ thích…

Trả lời

EnglishVietnamese