Chương trình tính tiền cước TAXI

Yêu cầu:

Viết chương trình tính tiền cước TAXI. Biết rằng:
– Km đầu tiên là 5000đ
– 30Km tiếp theo là 4000đ
– Nếu lớn hơn 30Km thì mỗi Km thêm ra sẽ phải trả là 3000đ
– Hãy nhập số Km sau đó in ra số tiền phải trả.

Giải thuật:

– Dùng lệnh if để chia các mức giá khác nhau.

Code:

/************************************************************
* Author: VNCODING
* History 
* 2014/03/18 first create VNCODING
*************************************************************/
#include <stdio.h>
#include <conio.h>

void main()
{
    float TotalKm;
    float Cost = 0;
    printf("\n Nhap vao so Km: ");
    scanf("%f", &TotalKm);
    if(TotalKm <= 1)
    {
        Cost = TotalKm * 5000;
    }
    else if(TotalKm <= 30 && TotalKm > 1)
    {
        Cost = (TotalKm - 1)*4000 + 1*5000;
    }
    else
    {
        Cost = 1*5000 + 29*4000 + (TotalKm - 30)*3000;
    }
    printf("\n So tien phai tra: %0.3f VND", Cost);
    getch();
}

Kết quả:

Nhap vao so Km: 32
So tien phai tra: 127000.000 VND

4 Comments on Chương trình tính tiền cước TAXI

    • Mình trả lời là : Km đầu tiên là 5000đ/km, và nếu rơi vào 1<Km<30 thì giá môi km là 4000đ, như vậy nếu đi được 5km thì giải thuật đưa ra có ý nghĩa là: bao gồm 4km phải trả là 4000/km + 1km phải trả phí là 5000đ =21000đ
      (5-1)X4000đ + 1×5000đ =21000đ.

  1. Cảm ơn Ad! Bài tập rất hữu dụng cho những người mới như mình.
    Cho mình xin phép nếu chút ý kiến. Nếu nhập vào -1 thì sẽ phi thực tế mất…và giá niêm yết để vậy nếu sau này muốn thay đổi giá trị cũng khá phiền phức cho người code.
    Đây là code của mình ạ, các bạn xem qua còn gì cần tối ưu thêm thì chỉ ra cho mình học hỏi thêm với nhé ^_^

    #include
    #define KM1 5000
    #define KM2 4000
    #define KM3 3000
    
    int main()
    {
        float cost, km;
        do{
              printf(“Enter the kilometer number: “);
              scanf(“%f”, &km);
          }while(km < 0);
          if(km = 1 && km <= 30){
              cost = KM2 * (km – 1) + KM1;
          }
          else 
              cost = KM3 * (km – 30) + (KM2 * 29) + KM1;
          printf("Amount to pay is: %.2f $", cost);
          getch();
          return 0;
    }
    
    • Hi @Apple Head
      Cảm ơn bạn đã quan tâm blog vncoding.

      >Cho mình xin phép nếu chút ý kiến. Nếu nhập vào -1 thì sẽ phi thực tế mất

      Good!. Trong một số bài tập mình đã ignore phần validate giá trị input vì do ko có time. Các bạn cố gắng càn validate được nhiều giá trị càng tốt.

      >if(km = 1 && km < = 30){

      Dòng này ko đúng bạn nhé. Toán tử ‘=’ là phép gán, không phải toán tử so sánh. “km = 1” luôn có giá trị TRUE ==> (km = 1 && km < =30) tương đương với (km <=30) Nếu nhập km = 0.5 --> kết quả bằng bao nhiêu bạn?

Leave a Reply to VietVH Cancel reply