أنا عالق في بعض المتاعب ، للأسف ما زلت أتعلم تفاصيل هذه اللغة.
لدي الرمز التالي
#define SIZE 5
typedef struct
{
int start;
int end;
int nElements;
int vetor[SIZE];
} TSTACK;
وأحاول إدراج القيم في صفيفها باستخدام الوظيفة التالية:
void Push(TSTACK *s, int elementInsert)
{
if(IsFull(s))
{
printf("%s\n", "# ERROR: full.");
}
else
{
s->end++;
if(s->end == SIZE)
{
s->end = 0;
}
s->vetor[s->end] = elementInsert;
s->nElements++;
}
}
وأنا أستخدم الوظيفة التالية لإظهار العناصر:
void Display(TSTACK *s)
{
int i;
if (isEmpty(s))
{
printf("%s\n", "# ERROR: empty");
}
else
{
for (i = 0; i < s->nElements; i++)
{
printf ("value: %d\n", s->vetor[i]);
}
}
}
سؤالي هو أنني لا أحصل على نفس النتيجة عندما أضيف كمية مختلفة من العناصر ، عندما أقوم بإدخال 5 عناصر ، تعرض وظيفة العرض جميع العناصر بشكل صحيح ، ولكن عندما أدخل أقل من 5 ، يبدو أن العنصر الأول هو مؤشر:
النتائج الرئيسية التالية في 4201166 ، 3 ، 5 ، 7
int main(void)
{
TSTACK test;
test.start = 1;
test.end = 0;
test.nElements = 0;
Push(&test, 3);
Push(&test, 5);
Push(&test, 7);
Push(&test, 3);
Display(&test);
}
النتائج الرئيسية التالية في 5 ، 3 ، 5 ، 7 ، 3
int main(void)
{
TSTACK test;
test.start = 1;
test.end = 0;
test.nElements = 0;
Push(&test, 3);
Push(&test, 5);
Push(&test, 7);
Push(&test, 3);
Push(&test, 5);
Display(&test);
}
هل يمكن لأحد أن يريني أين أنا مخطئ؟