CSharp (C#)

Kiểm tra 2 mảng khuyết N phần tử liên tiếp trở lên

Áp dụng để tính một số bài toán như tìm mặt hàng có n tháng liên tiếp không nhập xuất kho hay hàng hóa có n tháng liên tiếp không được bán trong khoảng thời gian nhất định, ….

Có 2 mảng A và B không trùng phần tử và mảng B luôn luôn là con của mảng A và có thứ tự sắp xếp giống nhau.
Duyệt tìm mảng A trong bảng B kiểm tra vị trí các phần tử thông qua 2 biến BeginStop.
Khởi đầu BeginStop=-1

Nếu tìm thấy phần tử ở vị trí i của mảng A trong mảng B thì gán Stop=i

Sau đó lấy Stop-Begin=1 mảng B đang liên tục trong mảng A

Còn Stop-Begin=0 là mảng không liên tục

Stop-Begin=N là mảng đang khuyết N phần tử liên tiếp.

Có 2 trường hợp đặc biệt:

Là khi mảng B không khuyết phần tử đầu tiên (vị trí 0) thì sẽ cập nhật lại biến Begin=0 nếu ngay khi vòng lặp mảng A có i bắt đầu 0 thì ta cập nhật lại Begin=0
Trường hợp 2 là từ vị trí cuối cùng của mảng B xuất hiện trong mảng A đến hết mảng A không tìm được thấy phần từ nào nữa thì khi đến cuối mảng A phải lấy i(vị trí cuối cùng mảng A)- Begin (vị trí cuối cùng của phần từ A tìm thấy trong mảng B)
Tiếp tục đọc “Kiểm tra 2 mảng khuyết N phần tử liên tiếp trở lên”
CSharp (C#)

Tính tuần của ngày bất kỳ trong năm? Theo chuẩn ISO 8601 và Globalization:

Làm báo cáo thường sử dụng chuẩn 1 năm có 52 tuần và được tính theo chuẩn ISO vậy khi số tuần tính theo ISO mà được 52 hay 53 thì mình cần kiểm tra lại nếu rơi vào tháng 12 thì sẽ là tuần thứ 52 còn rơi vào tháng 1 thì ta sẽ chuyển về tuần 1.

Trong SQL có hàm cung cấp  lấy tuần của ngày ra theo 2 chuẩn này:

VD: kiểm tra ngày 01/07/2022 theo định dạng MM/dd/YYYY

Theo ISO 8601:

select DATEPART(ISOWK,'2022-07-01') as WeekNumberISO
select DATEPART(ISOWK,'2021-01-01') as WeekNumberISO
select DATEPART(ISOWK,'2022-01-01') as WeekNumberISO
select DATEPART(ISOWK,'2020-12-31') as WeekNumberISO
DECLARE @Date date ='2022-01-01'
select case 
			when DATEPART(ISOWK,@Date)>51 and MONTH(@Date)=1 then 1 
			when DATEPART(ISOWK,@Date)>51 and MONTH(@Date)=12 then 52 
			else  DATEPART(ISOWK,@Date) 
		end as WeekNumberISO

Tiếp tục đọc “Tính tuần của ngày bất kỳ trong năm? Theo chuẩn ISO 8601 và Globalization:”
CSharp (C#)

Demo Biểu thuế luỹ tiến từng phần thuế thu nhập cá nhân C#

Ở đây mình chỉ viết theo cách mình nghĩ cách này mình share để mọi người xem và giúp xem có cải tiến thuật toán tính lũy tiến thuế có tốt hơn không?

Lý do khiến mình viết bài này vì đây là đề bài của 1 công ty mình đi phỏng vấn đã yêu cầu mình viết trên giấy nhưng lúc đó người ta đưa ra 1 VD mẫu mình có đọc đề là phải xây dựng hàm làm sao cho khi nhà nước thay đổi lũy tiến thì không được sửa hàm lúc đó mình cũng chỉ viết cứng dựa theo số liệu người ta trong Vd mẫu mà viết mà chỉ mỗi cái lương nó động còn cái khoảng lương và % chịu thuế thì chết cứng cũng may bài làm được chấp nhận nhưng vô phỏng vấn bị ? cải thiện cái hàm đó không phụ thuộc vào dữ liệu cố định của Nhà nước hic lúc đó chỉ làm thêm được cái khoảng % không phụ thuộc còn cái khoảng lương thì ko làm được chống chế nói nếu nhà nước thêm 1 định mức thì cũng phải sửa code nhưng nói qui định lập trình là không được sửa cũng may qua được về nhà mở máy test thử thì cách này ổn nhớ lại những bài vẽ hình C++ thời mới học cũng làm chết không động nhưng hôm kiểm tra ngồi bị thầy nói cũng nghĩ ra được công thức nên fix lại hết các bài cho nó động và cũng đạt điểm tuyệt đối!

Lan man 1 chút kỷ niệm và cũng cảm ơn người thầy đã chỉ dạy tôi lập trình từ những ngày C++

Đầu tiên mình thiết csdl sql lưu như sau:

cấu trúc bảng Biểu thuế luỹ tiến từng phần của Nhà nước
cấu trúc bảng Biểu thuế luỹ tiến từng phần của Nhà nước

Dữ liệu mẫu mình tự nhập (bạn phải nhập đúng theo qui định Nhà nước sau này Nhà nước có thay đổi thì bạn sửa lại trong CSDL không sửa code vẫn chạy đúng chỉ sợ Nhà nước sửa đổi cấu trúc Lũy biến từng phần thì khi đó chắc chắn phải sửa lại hàm tính thuế)

Dữ liệu mẫu
Dữ liệu mẫu


Tiếp tục đọc “Demo Biểu thuế luỹ tiến từng phần thuế thu nhập cá nhân C#”