Giúp giải quyết so sánh thời gian

Em mới học C++.Mọi người giúp e với ạ!

Viết chương trình tính tiền thuê máy dịch vụ Internet và in ra màn hình kết quả. Với dữ liệu nhập vào là giờ bắt đầu thuê (GBD), giờ kết thúc thuê (GKT), số máy thuê (SoMay).

  • Điều kiện cho dữ liệu nhập: 6<=GBD<GKT<=21. Giờ là số nguyên.
  • Đơn giá: 2500đ cho mỗi giờ máy trước 17:30 và 3000đ cho mỗi giờ máy sau 17:30.

Đây là bài giải của e

#include<iostream>
#include<conio.h>
#include<stdio.h>
using namespace std;
long TienThueDichVu(int GBD,int GKT,int SoMay){
	int TongTien;
	if(GBD<6||GBD>GKT||GKT>21){
		cout<<"K Cho phep nhap : ";
	}
	else if(GBD>=6||GBD<=17:30){
		TongTien = (GKT-GBD)*SoMay*2500;
	}
	else if(GKT>17:30||GKT<=21){
		TongTien = (GKT-GBD)*SoMay*3000;
	}
	return TongTien;
}
int main(){
	int GBD, GKT, SoMay;
	int TongTien;
	cout<<"Nhap gio bat dau : ";
	cin>>GBD;
	cout<<"Nhap gio ket thuc : ";
	cin>>GKT;
	cout<<"So may : ";
	cin>>SoMay;
	
	
	TongTien= TienThueDichVu(GBD, GKT, SoMay);
	cout<<TongTien<<endl;
	return 0;
}

Em biết là nó sẽ báo lỗi ở dấu hai chấm chỗ 17:30 .Nhưng e không biết giải quyết nó như thế nào. Vậy mọi người có thể giúp em giải quyết vấn đề này được không ạ.Em cám ơn!

1 Like

17.5 :smile::grinning::grinning:

Như vậy phải ép lại kiểu ah b.vì nó yêu cầu là giờ phải là số nguyên. :dancer:

ủa kiểu dữ liệu là gì thì tùy vào dữ liệu nhập vào chứ nhỉ, ví dụ nhập text thì string nhập số thực thì int , sao lại bắt buộc kiểu lạ lùng thế nhỉ

vậy ngoài việc lỗi đó ra.bạn có đóng góp thêm cho bài làm của mình hoàn thiện hơn nữa được không? mình cám ơn. :slight_smile:

mình không học c++, nhưng nhìn sơ bài này giải thiếu trường hợp và điều kiện else if bị sai,
. giả sử trường hợp là GBD là 17, GKT là 19 thì rõ ràng nó không nằm trên 2 trường hợp else if kia :grinning:

không biết ép kiểu gì cho chế nữa!:slight_smile: nửa đực nửa cái, chế để giờ chẵn đi cho dễ tính!

bài hay để làm thử :v:

hehe.đúng r.mình để h chẵn mà. =)). còn theo yêu cầu như đề bài thì mình nó báo lỗi.sửa đề thành 17h.=))

chế làm đi.có gì up bài cho em tham khảo với. :smiley:

Cám ơn b nhé.đúng là điều kiện mình bị sai thật. :smiley:

bác nên dùng cấu trúc struct nhé. khai báo

struct GioChoi
{
int gio;
int phut;
}

struct GioChoi GBD,GKT;

Giờ em ngủ mai đi học, có gì mai về làm tiếp :smiley:

Mình mới học đến hàm nên làm theo phương pháp hàm.struct mình chưa học nên mình chưa thử. :smiley:

Em có thể định dạng kiểu 0600 - 1730
Rồi dùng phép so sánh chuỗi hay số cũng được, không nhất thiết phải là time hay datetime gì đâu.

Ví dụ : 1930

  • ( 1930 > 1730 và 1930 < 2100) nên *3000
1 Like

Cái này cũng hay đó a. cám ơn a ạ. :slight_smile:

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