Chủ đề: Bài tập về stack
-
12-05-2014, 04:47 PM #1
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Bài tập về stack
Sử dụng stack hãy viết hàm chuyển đổi một số dương bất kì từ hệ cơ số 10 sang
hệt cơ số 2. Ai có thể chỉ mình hướng làm và cho mình xin tài liệu được không phần này mình khá yếu. Thanks nhiều!!View more random threads:
- chỉ em sửa ccái này với
- Sao ko thể chạy ham switch case????
- Bài tập C
- Xin hỏi thuật toán bài "Liệt kê các số có 3 chữ số sao cho tổng các chữ số của nó bằng số n ( 1 <= n <= 27) cho trước"
- Thắc mắc về tạo ứng dụng băng ngôn ngữ C
- scanf("%*[\n #]%d",&K) là gì vậy mọi người?
- em bị mắc lỗi "error spwaning cl.exe" ,làm sao bay giờ
- Lập trình trò chơi tung đồng xu
- con trỏ hàm và function template
- In xâu đảo ngược
-
13-05-2014, 03:19 PM #2
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi anhdungtpit
nếu lâu quá không thấy mình trả lời thì inbox qua fb cho mình nhé.
FB:https://www.facebook.com/trunghieu.espeed
Cảm ơn tất cả !
-
13-05-2014, 07:37 PM #3
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Chào bạn, trước hết để giải bài này bạn nên biết cách tìm ra cách chuyển từ hệ cơ số 10 sang hệ cơ số hai.
Ví dụ: chuyển từ số num = 26 sang nhị phân.
26% 2 = 0 --------> 0
13% 2 = 1 --------> 1
6 % 2 = 0 --------> 0
3 % 2 = 1 --------> 1
1 % 2 = 1 --------> 1
qua mỗi bước, num = num/2, dừng khi num ĐÃ bằng 1.
Lúc đó, dãy nhị phân của bạn là: 11010.
Ý tưởng code:
Khai báo struct stack:
typedef struct stack
{
int data[MAX];
int top;
}stack;
sau đó, bạn viết các hàm để: push, pop, kiểm tra stack rỗng, đầy.
rồi viết hàm loop chia đôi số num ban đầu, lấy kết quả num%2 push vào stack,
nhớ kiểm tra stack có đầy chưa. nếu số của bạn lớn hơn 2^MAX thì stack sẽ đầy.
-
17-05-2014, 03:21 PM #4
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Tài liệu về phần stack này có rất nhiều trên mạng, bạn có thể tìm, mình giới thiệu một vài ví dụ:
- DSAP Textbook của thầy Lê Minh Hoàng (viết rất kỹ lưỡng và chi tiết, chương trình viết bằng pascal)
- CTDL> của thầy Nguyễn Đức Nghĩa (viết không dễ hiểu bằng sách trên, chương trình viết bằng C)
Nếu bạn khá tiếng Anh thì có thể tìm các cuốn sau:
- Introduction to Algorithms
- Algorithms in C - Robert Sedgewick (mình cực kỳ thích quyển này, viết rất rõ ràng và dễ hiểu, chương trình được viết bằng C, và cách xử lý tình huống rất tinh tế!)
Bây giờ mình sẽ nói về bài toán cụ thể của bạn:
- Như bạn đã biết, một số thập phân khi cần chuyển sang số nhị phân thì ta có thể làm bằng cách chia số đó cho 2 đến khi số đó bằng 0, rồi ghi các số dư thu được ra giấy theo thứ tự từ dưới lên.
- Điều này có nghĩa là: số dư nào thu được trước sẽ được viết ra sau cùng và ngược lại, số dư sau cùng sẽ được viết ra đầu tiên.
>> Cái này tuân theo quy tắc "vào sau, ra trước" (LIFO - Last In First Out) của cấu trúc dữ liệu stack
>> Ta sẽ dùng stack để giải bài toán này bằng cách như sau:
+ Liên tục chia số n cho 2, dư bao nhiêu thì cho nó vào stack (dùng hàm push). Thực hiện công việc này cho tới khi nó bằng 0 (tức là bạn sẽ cho nó vào một vòng lặp).
+ Sau khi số n bằng 0, ta sẽ in kết quả. Dùng hàm pop lấy các giá trị trong stack ra, lấy được giá trị nào thì in nó ra màn hình (Điều này tương ứng với việc bạn viết các số dư từ cuối lên vậy).
Và đến khi stack đã rỗng thì bạn sẽ thu được biểu diễn nhị phân của n thôi!
NGUỒN SỈ ÁO KHOÁC DENIM NỮ TPHCM CHẤT LƯỢNG CAO Bạn muốn nhập sỉ áo khoác denim nữ để bắt đầu việc buôn bán Online phong cách nhưng lại chưa có kinh nghiệm, muốn sắm xưởng sỉ xống áo vừa có thể giải...
Xưởng sỉ áo khoác jeans denim giá...