01/10/2018, 11:53
Lỗi khi code stack trên C
Sau một hồi loay hoay k in đc các phần từ của stack ra màn hình, hóa ra là vì d = -255. Các pro cho em hỏi tại sao d nó lại = -255 vậy, và repair kiểu gì ạ
#include<conio.h>
#include<stdio.h>
#define max 20
// stack
struct stack
{
int d;
char mang[max];
};
void khoitao(stack &st)
{
st.d=-1;
}
int full(stack st)
{
return (st.d==max-1);
}
int rong(stack st)
{
return (st.d==-1);
}
int them(stack &st, char them)
{
if(full(st))
{
printf("Full, k them dc");
}
else
{
st.mang[++(st.d)] = them;
}
}
int xoa(stack &st, char xoa)
{
if(rong(st))
{
printf("Rong, k co gi de xoa");
}
else
{
xoa = st.mang[(st.d)--];
}
}
int show(stack st)
{
}
int main()
{
int i=1;
stack st;
khoitao(st);
char so;
printf("Nhap phan tu cho stack
");
printf(" = a thi dung nhap
");
do
{
printf("Phan tu %d = ", i);
scanf("%s", &so);
them(st, so);
i++;
}
while(so != 'a' && i<=max);
if(st.d==-1)
{
printf("
Stack rong");
}
else if(st.d==(max-1))
{
printf("
Stack day");
}
else
printf("
Stack chua day
");
}
printf("%d", st.d);
getch();
}
Bài liên quan
Chào Duc_Ngo1!
đây là ngôn ngữ c, mình viết trên trên phần mềm c free, những thứ viết ở trên là 1 ngăn xếp(stack), hay nói cách khác là 1 mảng nhưng thêm phần tử và xóa phần tử đều ở 1 đầu
Undefined behavior này.
so
có phải char* đâu. Dùng getchar() nhé, printf() chỉ dùng cho số thôi.đây là ngôn ngữ C++ không phải là C. C không có tham biến
void khoitao(stack &st)
Mong bạn học lại ngôn ngữ Cđể mình fix lại coi tks bạn
Tham chiếu
[spoiler]This text will be blurred[/spoiler]
Em cảm ơn anh! Em hay lẫn lộn 2 cái này!