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();
}

nghia viết 13:57 ngày 01/10/2018

Chào Duc_Ngo1!

  1. Bạn nên tìm hiểu đây là ngôn ngữ C hay C++
  2. Bạn có thể giải thích code cho mình hiểu bạn đang viết cái gì không
Duc Ngo viết 13:57 ngày 01/10/2018

đâ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

rogp10 viết 14:09 ngày 01/10/2018

Undefined behavior này.

scanf("%s", &so);

so có phải char* đâu. Dùng getchar() nhé, printf() chỉ dùng cho số thôi.

nghia viết 13:57 ngày 01/10/2018

đâ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

Duc Ngo viết 14:10 ngày 01/10/2018

để mình fix lại coi tks bạn

Dark.Hades viết 13:58 ngày 01/10/2018

tham biến

Tham chiếu

[spoiler]This text will be blurred[/spoiler]

nghia viết 13:59 ngày 01/10/2018

Em cảm ơn anh! Em hay lẫn lộn 2 cái này!

Bài liên quan
0