01/10/2018, 16:49
Nhờ mọi người góp ý thuật toán
Đề bài:
Một điểm KARAOKE tính tiền khách hàng theo công thức sau:
Mỗi giờ trong 3 giờ đầu tiên tính 30 000 đồng/giờ,
Mỗi giờ tiếp theo có đơn giá giảm 30% so với đơn giá trong 3 giờ đầu tiên.
Ngoài ra nếu thời gian thuê phòng từ 8 – 17 giờ thì được giảm giá 10%. Viết
chương trình nhập vào giờ bắt đầu, giờ kết thúc và in ra số tiền khách hàng phải trả
biết rằng 8 ≤ giờ bắt đầu < giờ kết thúc ≤ 24.
Cách làm của em:
#include <iostream>
#include <time.h>
#include <cstdio>
using namespace std;
int main()
{
int h1,h2,time,tien;
cout<<"Nhập giờ bắt đầu thuê phòng: ";
cin>>h1;
cout<<"Nhập giò bắt đầu trả phòng: ";
cin>>h2;
time = abs(h1-h2);
cout<<"Số giờ đã thuê phòng: "<<time;
if (time<=3)
{
tien=30000*time;
}
if (3<time<8)
{
tien=time*30000*30/100;
}
if (8<=time<=17)
{
tien=time*30000*40/100;
}
cout<<"Số tiền phải trả: "<<tien;
return 0;
}
Bài liên quan
Trước tiên là nhớ forrmat và markdown code của bạn trước khi đăng lên để mọi người dễ đọc nhé !
Mình không chuyên về C++, nhưng nhìn qua code thì mình nghĩ bạn nên dùng them
else
để thuật toán có thể chạy nhanh hơnTại sao không phải là
time = h2 - h1
@@ Tại vì theo đề bài thìh2 > h1
mà ?viết như này nè
.tien
cần gán giá trị trước nếu không sẽ lỗiMarkdown đoạn code của bạn nhé ! Chứ không phải là đề bài !
mình lấy giá trị tuyệt đối vì nhỡ nó có sang ngày hôm sau. vd: thuê từ 8h tối đến 3 giờ sáng chẳng hạn
cảm ơn bạn nhé, mình quên mất chưa gán biến time
Vậy thì bạn quên mất đề bài cho:
Nên là không có chuyện thuê sang ngày hôm sau đâu
Bạn chỉ cần đặt ``` ở trước và sau đoạn code nhé Đọc kỹ link mình gửi. Với cả hãy dùng tính năng chỉnh sửa bài viết để sửa nhé
Vậy cái “buff” 30% stack ntn với cái 10%? Tức là nhân với 0.6 hay 0.63?
đề bài nó hơi khó hiểu nên mình nghĩ nó cộng dồn vào với cái 30%
cảm ơn bạn, nhưng mình muốn dùng thử cái giá trị tuyệt đối nên làm cho nó đặc biệt tí còn markdown thì mình mới biết đến, mới sử dụng nên bạn thông cảm
Nếu mai sau làm dự án lớn mà bạn cứ thích làm kiểu đặc biệt thế này thì dễ ăn chửi lắm nên là cái gì tối giản được thì hãy tối giản nhé
Mà tại sao bạn lại tích solution cho topic này ??
Hình như ý là hát từ 8 tới 17h thì giảm 10% ấy chứ ko phải là thuê cỡ đó thì giảm đâu.
Giảm 30% cho khách thì số tiền khách phải trả là nhân 70% chứ???
Bạn đánh dấu Solved rồi xóa đi là có ý gì đây. Chưa kể tôi bảo bạn để ý biến
tien
, bạn lại ghi [quote=“Lainhattan, post:9, topic:71600”]chưa gán biến time
[/quote]
biến
time
làm gì có vấn đề nhỉ.mình cũng hơi khó hiểu ở chỗ đó
mình xóa cái cmt của mình ấy mà, với lại biến
tien
mình ghi nhầm thànhtime
cảm ơn bạn đã góp ý nhưng mình không có tích solution cho topic này, chắc do ấn nhầm hay gì đó
Phần tính tiền sai cơ bản rồi.
Phải hiểu là giống như tính tiền điện.
3 giờ đầu 30k/h
Những giờ tiếp theo 21k/h
Nếu hát hơn 8giờ thì tổng tiền giảm 10% (đơn giá giờ vẫn tính như 2 luật trên)
Như vậy thuật toán như sau
If (time =< 3) -> tien = time *30k
Else if (3<time<8) -> tien = 90k + (time-3)21k
Else tien = 0.9(90k+ (time-3)*21k)
Bạn có thấy chỗ này… nó sao sao không
Nói chung là đề chưa rõ lắm.