Từ 1 tới 8 trên tổng số 8 kết quả

Đề tài: Mình có 1 bài tập cần các bạn hướng dẫn giùm !

  1. #1
    Ngày gia nhập
    12 2007
    Bài viết
    0

    Mặc định Mình có 1 bài tập cần các bạn hướng dẫn giùm !

    Đề bài: Cho n điểm trên mặt phẳng. Hãy chỉ ra 1 đoạn có độ dài dai f nhất trong số các đoạn thẳng tạo bởi 2 điểm trên

  2. #2
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Đầu tiên viết hàm tính khoảng cách . Sau đó for1->n tại điểm i ( tính khoảng cách từ i -> (i+1,n). Lưu giá trị max và return về.

  3. #3
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Khoảng cách từ 2 điểm có thể tính như sau :
    Công thức toán học Latex
    Công thức toán học Latex

  4. #4
    Ngày gia nhập
    06 2007
    Nơi ở
    TP.HCM
    Bài viết
    113

    Trích dẫn Nguyên bản được gửi bởi sieuchuoi89 Xem bài viết
    Đề bài: Cho n điểm trên mặt phẳng. Hãy chỉ ra 1 đoạn có độ dài dai f nhất trong số các đoạn thẳng tạo bởi 2 điểm trên
    Tớ chỉnh lại cái đề cho dễ hiểu chút nha. (chắc cái đề là như thế này)
    Cho n điểm trên mặt phẳng. Hãy chỉ ra một đoạn có độ dài f (lớn nhất hay bé nhất) trong số các đoạn thẳng tạo bởi 2 điểm bất kỳ trong số n điểm trên.
    Cũng như cách của kidkid đưa ra nhưng hơi khó hiểu. Tớ diển tả lại như sau (tớ không rành về C, C++ lắm nên chỉ đưa ra giải thuật thôi).

    Code:
    //định nghĩa điểm
    struct DIEM
    {
           //tọa độ X,Y
           int X;
           int Y;
    }DIEM;
    
    //hàm tính min hay max gì đó
    float MinMax(float dd[], string type)
    {
         if(type==min)
             //hàm tính min trong khối giá trị đưa vào dd[]
         else
            // hàm tính max trong khối giá trị đưa vào dd[]
    }
    
    //hàm tính độ dài
    float TinhDoDai(DIEM d1, Diem d2)
    {
           //tính độ dài ở đây
    }
    //khai báo mảng D[n] chứa n điểm
    DIEM D[n];
    
    //mảng chứa độ dài
    float DoDai[];
    
    for(int i=0; i< n; i++)
    {
         for(j=i+1; j< n; j++)
         {
               DoDai[i+j-1]= TinhDoDai( D[i],D[j] ); // -1 là để cho mảng DoDai[] bắt đầu từ 0
         }
    }
    
    // ta có mảng chứa độ dài, rồi tính min, max
    min= MinMax( DoDai[], "min");
    max= MinMax( DoDai[], "max");
    Tớ chỉ đưa ra giải thuật như thế thôi, cậu tham khảo được gì thì tham khảo, code thì tớ không rành về C, C++ nên chỉ có thể viết như vậy thôi.
    Đã được chỉnh sửa lần cuối bởi sunflower : 05-12-2007 lúc 12:13 AM. Lý do: sửa công thức

    Gác Kiếm

  5. #5
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Mình cho thêm bạn 1 gợi ý :
    Hàm tính toạ độ :
    PHP Code:
    float Distance(float x0float y0float x1float y1)
    {
        
    float dis sqrt(pow(abs(x0-x1),2)+pow(abs(y0-y1),2));
        return 
    dis;

    Hàm tính xử lý khoảng cách lớn nhất :
    PHP Code:
    void MaximumDistance()
    {
        
    max = -1000;
        for (
    int x 1<= Px++)
        {
            for (
    int y x+1<= Py++)
            {
                if (
    Distance (Dx[x],Dy[x],Dx[y],Dy[y]) >= max )
                {
                    
    max Distance(Dx[x], Dy[x], Dx[y], Dy[y]);
                    
    _Apoint x/*Lưu toạ độ x*/
                    
    _Bpoint y/*Lưu toạ độ y*/
                
    }
            }
        }

    Với Dx[i], Dy[i] lần lượt là toạ độ điểm của điểm thứ i .
    Và P là tổng số điểm nhập vào .
    Bây giờ thì tới chỉ chờ bạn thôi đó ^^!

  6. #6
    Ngày gia nhập
    12 2007
    Bài viết
    0

    Thumbs up Mình có 1 bài tập cần các bạn hướng dẫn giùm !

    Cảm ơn các bạn nhiều vì đã cho mình những gợi ý

  7. #7
    Ngày gia nhập
    12 2007
    Bài viết
    0

    Bạn rox rook cho mình hỏi chút : Có cần thiết phải khởi gán cho max= -1000 không hay giá trị khác cũng được?
    Cảm ơn nhiều!

  8. #8
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    À cái đó thì chỉ là 1 giá trị tạm thời thôi, thực chất nó chỉ là "1 biến tạm thời" để mình xử lý thôi, bạn cho nó bằng : max = -1 hay max = -2 cũng không sao, miễn sao mình giá trị của nó không vượt quá khoảng cách mình cần tính là được, do khoảng cách thì luôn dương ( > 0 ) nên bạn chỉ cần cho max < 0 là được ! Giả sử nếu bạn cho max = +1000, mà khoảng cách giữa 2 điểm trên mặt phẳng cần tính < +1000 thì cái này :
    PHP Code:
    if (Distance (Dx[x],Dy[x],Dx[y],Dy[y]) >= max )
                {
                    
    max Distance(Dx[x], Dy[x], Dx[y], Dy[y]);
                    
    _Apoint x/*Lưu toạ độ x*/
                    
    _Bpoint y/*Lưu toạ độ y*/
                

    coi như vô nghĩa !

Các đề tài tương tự

  1. các bạn sửa giùm lỗi này hộ tớ với!
    Gửi bởi mr.cuong_tq trong diễn đàn Nhập môn lập trình Java
    Trả lời: 1
    Bài viết cuối: 01-10-2012, 06:36 PM
  2. Fix lỗi giùm em với ạ
    Gửi bởi anhtnse02984 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 11
    Bài viết cuối: 10-08-2012, 02:19 PM
  3. Turbo C Lỗi Mọi người sữa giùm mình lỗi ni
    Gửi bởi binhlama00 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 01-03-2012, 08:56 PM
  4. mấy anh sửa lỗi này giùm em nha
    Gửi bởi lu_ngovan trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 3
    Bài viết cuối: 05-05-2010, 04:17 PM
  5. sửa giùm em bài sắp xếp
    Gửi bởi tonggiavinh trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 19-01-2008, 09:42 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn