Cách làm như thế này có đỡ tốn bộ nhớ và nhanh hơn không?

Em có một bài tập tính số tiến nhỏ nhất mà có thể mua một sản phẩm
input gồm có số sản phẩm hiện đang có ( gồm giá tiền và số lượng sản phẩm hiện đang có ) và số sản phẩm mà một người khách hàng yêu cầu.
ở phần mảng ghi sản phẩm đó nếu như theo đúng làm là em tạo mộng mảng hai chiều int goods[price][size];
và em sắp xếp mảng này theo price và tính .
nhưng lúc làm xong em lại nghĩ tạo mảng như vậy mà mình chỉ sắp xếp thoe một thứ là price thôi thì hơi tốn thời gian nên em quyết đinh tạo một mản một chiều là số thập phân float goods[info] ; và info đó cấu tạo là price , size
ví dụ sản phẩm có giá là 3 số lượng là 7 thì em sẽ lưu là 3,7 và sắp xếp theo phần nguyên rồi lúc sau lấy phần thập phân ra ! đến đây thì ko biết lấy phần thập phân ra sao và cách làm này có hiệu quả ko nữa có ai có cách làm hay hơn xin giúp em và giúp em chỗ sai trong quá trình phân tích đề và nêu định hướng giải ạ :slight_smile:

Không cần hai chiều đâu :smiley: struct {price, size} thôi.

1 Like

như vậy thuật toán để sắp xếp này là nhứ thế nào ạ và cách truy xuất chúng ạ

có thể thay struct bằng class được ko ạ ! Nếu không được thì nguyên nhân là do đâu vậy !

Cách làm này gây ra khó hiểu , vì 1 giá trị float mang 2 nghĩa ( cả giá và số lượng) , lại còn phải mất thêm xử lý tách giá trị này ra nguyên+thập phân mới ra kết quả.

Còn về định hướng giải bạn nêu full bài toán ra đây xem thử nào. Đọc cái trên chưa hiểu lắm.

1 Like

k bàn đến việc thuật toán để sử dụng sẽ bị phức tạp thì cách của bạn có 1 nhược điểm đó là số thực trong máy tính là kiểu biểu diễn gần đúng. Do đó sẽ bị mất dữ liệu nếu tổ hợp số của bạn dính vào các số gần đúng đó.

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