Tải bản đầy đủ (.pdf) (10 trang)

C++ cho nguoi moi hoc bai 05

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (926.75 KB, 10 trang )

LẬP TRÌNH C CHO
NGƯỜI MỚI HỌC
Giảng viên: Thạc sĩ Trần Thanh Sơn


BÀI TẬP TỔNG HỢP CUỐI KHÓA (tt)
Bài 1: Tính tiền lương ngày cho công nhân, cho biết trước giờ vào ca, giờ ra ca. Giả sử rằng
tiền trả cho mỗi giờ trước 12 giờ là 6.000đ và mỗi giờ sau 12 giờ trưa là 7.500đ. Giờ vào ca
sớm nhất là 6 giờ sáng và giờ ra ca trễ nhất là 18 giờ.
Bảng ví dụ vài trường hợp
Giờ vào ca

Giờ ra ca

7

16

6

11,5

13
8

Số giờ làm sáng

Số giờ làm chiều

Tiền lương


16 - 12 = 4

5 * 6.000 + 4 * 7.500 = 60.000

11,5 - 6 = 5,5

0

5,5 * 6.000 = 33.000

17

0

17 – 13 = 4

4 * 7.500 = 30.000

19

x

x

Dữ liệu không hợp lệ

12

-7=5


2


Giải pháp:

BÀI TẬP TỔNG HỢP CUỐI KHÓA (tt)

 B1: Kiểm tra đk: Vào ca min ≤ giờ vào ca ≤ giờ ra ca ≤ Ra ca max ? Đúng => B2, sai => dữ liệu không hợp lệ
 B2: Tính số giờ sáng, số giờ chiều, tiền lương.
 Nếu giờ ra ca ≤ chuyển ca (12h) thì:
 Số giờ chiều = 0;
 Số giờ sáng = giờ ra ca – giờ vào ca;

 Nếu giờ vào ca ≥ chuyển ca thì:
 Số giờ sáng = 0;
 Số giờ chiều = giờ ra ca – giờ vào ca;
 (giờ vào ca ≤ chuyển ca) && (giờ ra ca ≥ chuyển ca) thì:
 Số giờ sáng = chuyển ca – giờ vào ca;
 Số giờ chiều = Giờ ra ca

– chuyển ca;

 Tiền lương = giờ sáng * đơn giá sáng + giờ chiều * đơn giá chiều.

3


BÀI TẬP TỔNG HỢP CUỐI KHÓA (tt)
Bài 2: Tính số tiền lời thu được khi bán m kg hàng hóa (0< m ≤ 100), biết rằng:







0 < m ≤ 10 :

Tiền lời là 5.000đ/kg

10 < m ≤ 20 :

Tiền lời là 7.000đ/kg

20 < m ≤ 50 :

Tiền lời là 9.000đ/kg và thêm 2% tổng số tiền lời

50 < m

Tiền lời là 10.000đ/kg và thêm 4% tổng số tiền lời nhưng không

:

quá 1.000.000 đ

4


BÀI TẬP TỔNG HỢP CUỐI KHÓA (tt)
Giải pháp:


• B1: Cho người dùng nhập vào m
• B2: Xét các trường hợp của m để tính tiền lời:
0 < m ≤ 10:

Tiền lời = 5.000 * m

10 < m ≤ 20:

Tiền lời = 7.000 * m

20 < m ≤ 50:

Tiền lời = 9.000 * m
Tiền lời = Tiền lợi + Tiền lời * 0,02

50 < m ≤ 100:

Tiền lời = 10.000 * m
Tiền lời = Tiền lợi + Tiền lời * 0,04
Tiền lời > 1.000.000 thì Tiền lời = 1.000.000

Trường hợp khác

Tiền lời = -1

• B3: Nếu Tiền lời = -1 thì in ra lỗi là khối lượng không đúng. Ngược lại in giá trị Tiền lời ra.
5



BÀI TẬP TỔNG HỢP CUỐI KHÓA (tt)
Bài 3: Nhập vào một số nguyên, đếm và in ra tất cả các ước số.
Giải pháp:
Định nghĩa: Ước số của một số n là số mà n chia hết.

B1: Khởi tạo biến Đếm = 0;
B2: Lặp lại: Duyệt các số từ 1 đến n, số i nào mà n % i =0 thì
• In i ra màn hình;
• Đếm ++;
B3: In biến đếm ra màn hình.
6


BÀI TẬP TỔNG HỢP CUỐI KHÓA (tt)
Bài 4: Nhập vào một số nguyên n, kiểm tra có phải là số hoàn chỉnh không?
Giải pháp:
Định nghĩa: số hoàn chỉnh n là số có tổng ước số = tích ước số (không kể số n) .

B1: Khởi tạo biến Tổng_ước_số = 0; Tích_ước_số = 1
B2: Lặp lại: Duyệt các số từ 1 đến n-1, số i nào mà n % i =0 thì
• Tổng_ước_số = Tổng_ước_số + i;
• Tích_ước_số = Tích_ước_số * i;
B3:Kiểm tra Tổng_ước_số = Tích_ước_số ? Nếu đúng thì in là số hoàn chỉnh,
ngược lại in không phải là số hoàn chỉnh.

7


BÀI TẬP TỔNG HỢP CUỐI KHÓA (tt)
Bài 5: Nhập vào một mảng số nguyên n phần tử. Đếm số phần tử âm, dương, bằng 0. Cải

tiến xem mảng có sắp thứ tự tăng / giảm không?
Giải pháp:

B1:Nhập n phần tử như đã làm ở các bài trước.
B2: Khởi tạo dem_am = 0; dem_duong = 0, dem_0= 0;
B3:Lặp lại: Duyệt các phần tử a[0] đến a[n-1]
• dem_duong ++; nếu a[i]>0;
• dem_am ++; nếu a[i]<0;
• dem_0 ++ ; nếu a[i]=0;
In ra màn hình dem_duong, dem_am, dem_0.
8


BÀI TẬP TỔNG HỢP CUỐI KHÓA (tt)
Phần cải tiến: Kiểm tra mảng có sắp thứ tự tăng/ giảm hay không?
Nhận xét:

• Mảng tăng a[0] ≤ a[1]…. ≤ a[n-1], có n-1 phép so sánh “≤”
• Nếu n-1 phép so sánh ≤ này đều đúng => Mảng tăng
• Chỉ cần 1 phép so sánh ≤ sai thì mảng không tăng.
Sử dụng biến dem_tang, kiểm tra dem_tang = n-1 không?
Tương tự cho mảng giảm.

9


BÀI TẬP TỔNG HỢP CUỐI KHÓA (tt)
Giải pháp:

B1: Khởi tạo dem_tang = 0; dem_giam = 0;

B2: Lặp lại: Duyệt các phần tử a[0] đến a[n-2] (n-1 lần)
• dem_tang ++ nếu a[i] ≤ a[i + 1];
• dem_giảm++ nếu a[i] ≥ a[i + 1];
B3: Kiểm tra các biến : dem_tang, dem_giam
• Nếu dem_tang = n-1 thì in mảng tăng.
• Nếu dem_giam = n -1 thì in mảng giảm.
• Trường hợp còn lại in mảng không tăng/ không giảm
10



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×