Bài toán tính tiền quán karaoke

Thảo luận trong 'C/C++' bắt đầu bởi vtn, 5 Tháng tám 2012.

  1. Offline

    vtn

    • Windows 2.0

    Số bài viết:
    47
    Đã được thích:
    23
    Điểm thành tích:
    20
    Mọi người cùng thảo luận cách giải của bài toán này nha

    Một điểm kraoke tính tiền theo công thức sau.
    - Mổi giờ trong 3h đầu tiên tính 60.000đ/h.
    - Mổi giờ tiếp theo giảm 30% so với đơn giá trong 3h trước.
    Ngoài ra nếu thời gian thuê phòng từ 8h - >14h thì được giảm giá 15%.
    Viết chương trình nhập vào h giờ ban đầu, giờ kết thúc và in ra màn hình số tiền khách hàng phải trả 8<h ban đầu<h kết thúc.
  2. Offline

    Xautrai_LT03B

    • Windows 1.0

    Số bài viết:
    38
    Đã được thích:
    15
    Điểm thành tích:
    10
    Phương pháp giải quyết vấn đề
    1 Viết hàm tính giờ :
    - Dùng tách chuỗi để lấy giờ và phút ( ví dụ 8.30 ==có nghĩa 8h và 30ph)
    - Tính số phút Sp=gio*60+phút ( vd : 8*60+30)
    - Lấy Số phút ((Tính khi nhập vào thời jan kết thúc) - Số phút (Tính khi nhập vào thời jan bắt đầu)/60)==>Ra đc jơ
    2 hàm tính tièn
    int Tinhtien(int gio)
    {
    if(gio<=3)
    {
    return= 60*gio;
    }
    else
    {
    return (3*60)+(gio-3)*(70*60/100); //Giam 30% con 70%
    }
    }
    3 Kiem tra thuoi gian noi sau
    hongoctrien thích bài này.
  3. Offline

    hongoctrien

    • Friends

    Số bài viết:
    2.449
    Đã được thích:
    2.464
    Điểm thành tích:
    2.431
    Còn một cách là quy tất cả giờ phút về giây :D
  4. Offline

    Xautrai_LT03B

    • Windows 1.0

    Số bài viết:
    38
    Đã được thích:
    15
    Điểm thành tích:
    10
    Thuong nguoi ta thuong khong tinh giay
  5. Offline

    KingMax

    • Windows NT

    Số bài viết:
    145
    Đã được thích:
    63
    Điểm thành tích:
    60
    Mọi người cùng thảo luận cách giải của bài toán này nha

    Một điểm kraoke tính tiền theo công thức sau.
    - Mổi giờ trong 3h đầu tiên tính 60.000đ/h.
    - Mổi giờ tiếp theo giảm 30% so với đơn giá trong 3h trước.
    Ngoài ra nếu thời gian thuê phòng từ 8h - >14h thì được giảm giá 15%.
    Viết chương trình nhập vào h giờ ban đầu, giờ kết thúc và in ra màn hình số tiền khách hàng phải trả 8<h ban đầu<h kết thúc.

    Cách này chỉ hiẹn hữu vứi biến 2 giá trị, nếu làm tốt hơn phải tách chuỗi để phân ra giờ và phút
    int sotien(int giobatdau,int gioketthuc)
    {
    int tien,gio=giobatdau-gioketthuc,giokm=0;
    {
    if (gio <= 3)
    tien = 60*3;
    else //lớn hơn 3 giò được giảm 30%
    tien = 60*3 + ((gio-3)*(60/100*70)) // 3 giờ đầu tính 60K, các giờ tiêp theo (giờ - 3 giờ //đầu) tính = 70% so với giá gốc
    } // xong hàm tính tiền, tiếp tục chạy hàm khuyến mãi ngày
    if (giobatdau >= 8 && giobatdau < 14) // bat dau tu 8h-13h se co 1h khuyen mai hoac hon
    {
    giokm = gioketthuc - giobatdau; //cai nay ton tai so gio dc khuye mai
    else
    giokm = 0;
    }
    // ham tinh tien khuyen mai
    tien = tien- (giokm*60/100*15); // duoc khuyen mai giam 15%

    return tien;
    }


    void main()
    {
    int gio,giokt,sotien;
    cout<<"Nhap vao gio bat dau : ";
    cin>>gio;
    cout<<"Nhap vao gio ket thuc : ";
    cin>>giokt;
    sotien = sotien(gio,giokt);
    cout<<"Tong so tien thanh toan la : "<<sotien;
    }


    Nếu làm thoe thế này là 1 thuật toán tối ưu, lí do khi chèn sẽ không lồng vào hàm gò bó

    Đệ gà xin các huynh chỉ giáo

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí