30/09/2018, 16:04
Dùng stack đổi cơ số từ hệ 10 ra hệ 2
#include<stdio.h>
#include<conio.h>
#include"stdlib.h"
struct node
{
int info;
struct node *next;
};
typedef struct node *Stacknode;
Stacknode S;
void StackLint(Stacknode *S)
{
*S=NULL;
return;
} // khai bao stack = dslk
int StackEmpty(Stacknode S)
{
return (S==NULL);
} // kiem tra stack rong
void StackPush(Stacknode *S,int x)
{
Stacknode p;
p=(Stacknode)malloc(sizeof(struct node));
p->info=x;
p->next=*S;
*S=p;
} // day 1 phan tu vao stack
void StackPop(Stacknode *S,int *x)
{
Stacknode p;
if(S!=NULL)
{
*x=(*S)->info;
p=*S;
*S=(*S)->next;
free(p);
}
} // lay 1 phan tu khoi stack
void doi_10_2(Stacknode *S, int *n)
{
int du, thuong,x;
Stacklint(S);
printf("Nhap so he 10: ");
scanf("%d",n);
thuong=*n;
while(thuong!=0)
{
du=thuong%2;
thuong=thuong/2;
push(S,Newnode(du));
}
printf("he 2 cua so %d la: ", *n);
while(!StackEmpty(S))
printf("%d",pop(S,&x));
}
int main()
{
int i,x;
StackLint(&S);
for(i=0;i<10;i++)
StackPush(&S,i);
while(S!=NULL)
{
StackPop(&S,&x);
printf(" %d ",x);
}
int n;
doi_10_2(&S,&n);
return;
}
Đây là đoạn code về chuyển đổi cơ số từ hệ 10 ra hệ 2 bằng stack! ở trong phần void doi-so 10 2 không biết em bị lỗi gì! Ai giúp em sửa đoạn này với ạ! em cảm ơn!
Bài liên quan
Lâm, Code này bị thiếu tùm lum hàm mà. Làm sao mà chạy được?
Anh sửa giúp em được không ạ! đổi từ hệ 10 ra hệ 2
đoạn voide void doi_10_2 đó ạ! vẫn thiếu ở dưới hàm main nhưng em không khắc phục được
mình khuyên này … hiểu dc cách hình thành cấu trúc thôi … :v … sau đó chuyển sang C ++ mà học mà làm có sẵn các thư viện rồi thích stack thì có stack thích queue thì có queue … còn mình ngại đọc code lắm …
Mình khuyên Lâm nhé, tự code đi, đừng copy code ở đẩu đâu trên mạng đem về coi là của mình. Như vậy không học được đâu. Code đó 100% không phải do bạn viết, bạn chỉ copy ở đâu đó về. Mà còn không biết cách copy dẫn đến thiếu hàm mà bạn cũng không hiểu thiếu cái gì. Vấn đề không phải là bài này lỗi, vấn đề là bạn không biết bạn đang hỏi cái gì.
Hãy bắt đầu lại từ đầu, chậm mà chắc. Tin Đạt đi, nếu coi lại kiến thức cho vững, thay vì dành thời gian tìm bài có sẵn. Thì tầm 1 tháng thôi là bạn đã nắm kiến thức rồi.
em hỏi về phần đổi cơ số ạ! vì code đoạn đó em tìm trên mạng r đề vào bài này! còn cả về stack là của em ạ!
Đề bài là dùng stack để đổi từ hệ 10 sang hệ 2 hay sao?
Em copy đoạn code trên mạng bị thiếu rồi, hoặc là em làm mới. Hoặc là em tìm code khác trên mạng (mà em tìm không có tìm thấy cái em cần đâu).
Hôm trước anh bực mình là vì a đọc xong thấy code copy thiếu tùm lum mà đem đi hỏi, khác nào đánh đố mọi người. Nhưng nếu em nêu rõ vấn đề, anh sẽ giúp, và phải là code của em. Thì khi đó anh sửa em mới hiểu, và ít ra anh hiểu em đang hỏi cái gì.
Em đọc bài này, bạn này cũng gặp tình trạng tương tự của em.
Bạn @phamhalam trình bày thuật toán của bạn đi. Ý tưởng của bạn như nào? Bạn thực hiện từng bước như nào? Sau khi thuật toán được phân tích đúng, chúng ta sẽ cùng nhau hiện thực từng bước. Làm như vậy sẽ dễ dàng hơn nhiều.
dạ vâng! đề bài là dùng như thế! vấn đề em cũng không tìm ra nên đã chèn thử vào nên mới lỗi be bét z anh ạ! mong anh thông cảm phần này không biết hỏi đi đâu nên mới lên đây hỏi ạ!
Ok, để tối về có thời gian anh xem cho
Vâng! Em cảm ơn anh làm phiền mọi người quá!
có nhất thiết phải dùng danh sách liên kết k bạn? bài này dùng mảng 1 chiều có vẻ đơn giản hơn.
Nếu dùng mảng 1 chiều, bạn có thể tham khảo bài này.
tranh thủ qua đây đàm đạo bài này cho vui mọi người
Chưa đọc code của Tuấn nhưng ý của Tuấn đúng rồi đấy. Stack chỉ là khái niệm, có thể dùng mảng 1 chiều để thể hiện stack. Dùng DSLK phức tạp hơn không cần thiết.
bài này dùng mảng đúng là hay hơn thật! em chèn dslk bất thành xin phép tham khảo bài!
cảm ơn bác khai sáng cho mình
mình cũng mới học C++, đây là code của mình mong mọi người góp ý
@tuancoi2506 anh có thể cho em xem code C để xem ý tưởng được không ạ. em chưa biết C++ nên k hiểu
Từ code suy ngược ra ý thì nhức đầu lắm.