Xem tư duy giải bài toán như vậy có hợp lí ko ạ

Do vừa tự học nên không biết code có đúng không xin cao nhân chỉ điểm dùm ạ
Viết chương trình C++ để tính cước điện thoại bàn cho một hộ gia đình với các thông số như sau:

  • Phí thuê bao bắt buộc là 25 nghìn.
  • 600 đồng cho mỗi gọi của 50 phút đầu tiên.
  • 400 đồng cho mỗi phút gọi của 150 phút tiếp theo.
  • 200 đồng cho bất kỳ mỗi phút nào sau 200 phút đầu tiên.
#include<iostream>
#include<conio.h>
using namespace std;

long int minute,fee;
int tong;
const int fixedfee=25000;
int main()
{
	cout << "enter your time";
	cin >> minute;
	if (minute <= 50)
		fee = fixedfee + minute * 600;
	
	if (minute <= 200 && minute >= 50)
		fee = fixedfee + (minute - 50) * 400 + 50 * 200;
	
	if (minute >= 200)
		fee = fixedfee + minute * 200;

	cout << "your fee is :" << fee << endl;
	return 0;
}

bạn ghi tiêu đề là “Sủa lỗi dùm em ạ” nhưng lại không nói lỗi đang gặp là gì.

để biết code có đúng không thì bạn có thể tính nháp ra giấy cho từng trường hợp, rồi so sánh kết quả tự tính với kết quả chương trình.

Và bạn code sai rồi nhé :smiley:

3 Likes

ý mình là theo đề bài mình giải có sai ko ý mà ý là tư duy theo hướng giải như v có đúng ko á hihi

Sinh viên bây giờ sao ấy nhỉ, 1 chút cũng hỏi, bài dễ như vậy cũng hỏi. Các bạn sợ mất thời gian của mình hay ko muốn lấy thời gian của mình để trải nghiệm?
Các bạn có thể hỏi, ok người khác sẽ chỉ nhưng kinh nghiệm của các bạn sẽ là con số 0 tròn trĩnh, vì các bạn ko học được gì từ lỗi sai của mình mà chính người khác đang học giùm các bạn. Rồi cứ hỏi tại sao sinh viên đang học lấy đâu ra kinh nghiệm để apply. Tại các bạn ko chịu bỏ thời gian của mình ra để có kinh nghiệm đấy.

4 Likes

Sử dụng else if thay vì dùng các lệnh if không liên quan đến nhau.
Như vậy bạn đỡ cần phải kiểm tra thừa điều kiện.
Còn code đúng hay không thì bạn tự đi mà chạy rồi tự kiểm tra.

3 Likes

ý của em là e hỏi hướng giải v có đúng ạ… e tự học xung quanh em không có ai trong ngành ạ. E chỉ sợ hướng giải của em vậy nó có thể không đúng nên hỏi thôi chớ code vẫn chạy ok ạ Em cần người chấm code góp ý … Nếu anh có góp ý như vậy em cảm ơn ạ.em sẽ xem xét và hạn chế post những bài này ạ

1 Like

ồ vậy à… không ý mình là hướng giải của mình v ổn á tư duy giải bài toán v ổn không thôi

Bạn nói những câu khó hiểu quá =))

Hướng giải quyết của bạn thì ổn, nhưng chi tiết các bước thì chưa đúng.
Theo mình thấy thì với các trường hợp số phút >= 50 thì chương trình của bạn sẽ chạy sai.

Ngoài ra, bạn nên viết câu chữ chỉn chu hơn.

3 Likes

à hiểu rồi nhé… cảm ơn bạn đã góp ý nha

  • em mới học thì đừng xài biến toàn cục, là biến ko nằm trnog hàm nào :V Như bài này em cứ cho hết biến vào trnog main():

    int main()
    {
        long int minute,fee;
        int tong;
        const int fixedfee=25000;
    
  • ko cần #include<conio.h> làm gì :V

  • tư duy vầy cũng được nhưng có chỗ chưa hợp lý, ví dụ minute = 50 thì 2 cái if đầu tiên đều chạy, tuy ra kết quả đúng nhưng fee phải tính 2 lần :V

  • với minute >= 200 chạy sai nha :V Dưới 200 phút có cách tính khác mà sao trên 200 phút thì tự dưng 200 phút đầu tiên cũng tính là 200 đồng :V

  • có cách làm khác là là if else:

    // đặt tên cho từng hằng số để biết số này nghĩa là gì, tên  dài cũng được :V
    const int initialFee = 25000;
    const int feePerMinBracket1 = 600;
    const int bracket1MaxMin = 50;
    const int feePerMinBracket2 = 400;
    const int bracket2MaxMin = bracket1MaxMin + 150;
    const int feePerMinBracket3 = 200;
    
    int fee = initialFee;
    if (minute <= bracket1MaxMin) {
        fee += minute * feePerMinBracket1;
    } else if (minute <= bracket2MaxMin) {
        fee += bracket1MaxMin * feePerMinBracket1 +
               (minute - bracket1MaxMin) * feePerMinBracket2;
    } else {
        fee += bracket1MaxMin * feePerMinBracket1 +
               (bracket2MaxMin - bracket1MaxMin) * feePerMinBracket2 +
               (minute - bracket2MaxMin) * feePerMinBracket3;
    }
    
  • viết vậy vẫn hơi dài, em có thể nghĩ ra cách khác ngắn hơn ko :V :V :V

4 Likes

ồ hay vậy:D. Cảm ơn nhiều nhiều nhiều lắm luôn vì lời góp ý nha :smiley: hay thật

tuy bài của anh có vẻ dài sau một lúc ngâm cứu e thấy cũng hay hay thật. em mới tập tành thôi nên lâu lâu có hỏi ngu cũng thông cám nhé :smiley: hahah. hiện e chưa có cách nào ngắn hơn cách của anh đâu :v

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?