נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
מדעי המחשב
RSS UnderWarrior Forums : RSS מדעי המחשב
נושא

נושא: עזרה בבקשה

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
giladbig
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 21 May 2009
מדינה: Israel
משתמש: מנותק/ת
הודעות: 1
נשלח בתאריך: 21 May 2009 בשעה 00:41 | IP רשוּם
ציטוט giladbig

שלום לכולם

אני צריך לממש מחסנית בעזרת מערך, בשפת C

יש לי כבר פונקציות מוכנות שמדמות מערך

השאלה שלי היא, הן הרי מחזירות INT 0 או 1

ופויינטר שמשנה את ערכו, שמצביע למבנה.

איך אני למשל משווה בין שני איברים ראשונים במערכים שונים

pop(s)==pop(st)

הרי הקומפיילר יתייחס לזה כאל 1=1 או ל0=0 ולא לאיבר עצמו.

כשניסיתי להשוות את האיבר עצמו, הוא לא נתן לי כי זה מצביע למבנה-

#include<stdio.h>

#include<conio.h>

#define N 4

typedef struct

{

int num;

}ITEM;

typedef struct

{ITEM arr[N];

int top;

}STACK;

int create(STACK *s)

{

s->top=-1;

return 1;

}

int is_empty(STACK *s)

{

return s->top==-1;

}

int is_full(STACK *s)

{

return s->top==N-1;

}

int pop (STACK *s, ITEM *i)

{

if(is_empty(s))

return 0;

*i=s->arr[s->top--];

return 1;

}

int push (STACK *s, ITEM *i)

{

if(is_full(s))

return 0;

s->arr[++s->top]=*i;

return 1;

}

int top(STACK *s,ITEM *i)

{

if(is_empty(s))

return 0;

*i=s->arr[s->top];

return 1;

}

void ex1(STACK *a,STACK *b,STACK *c,ITEM *i) //maybe order is wrong=checking a[0] maybe need to check end of array

{

while (!is_empty(a) && !is_empty(b))

{

// pop(b,i);

// pop(a,i);

if (a->arr!=b->arr)

if (a->arr<b->arr)

{

push (c,a->arr);

pop(a,i);

}

else {

push (c,b->arr);

pop(b,i);

}

else {

push(c,b->arr);

pop(b,i);

pop(a,i);

}

for (int j=N*2; j>=0;j--)

printf(".............%d\n",c->arr[j]);

printf ("/////////////////\n");

}

while (!is_empty(a))

{

push (c,a->arr);

pop(a,i);

}

while (!is_empty(b))

{

push (c,b->arr);

pop(b,i);

}

}

void main(void)

{

STACK a,b,c;

ITEM i;

clrscr();

create(&a);

create(&b);

create(&c);

for (int j=0; j<(N);j++)

{

scanf("%d",&i);

push (&a,&i);

}

for (j=0; j<(N);j++)

{

scanf("%d",&i);

push (&b,&i);

}

/*if(pop(&a,&i))

printf("....%d",pop(&a,&i));

printf(".........%d",i.num);

printf(".............%d",a.arr[0]);

*/

ex1(&a,&b,&c,&i);

//for (j=N*2; j>=0;j--)

// {

// printf(".............%d\n",c.arr[j]);

// }

}

חזרה לתחילת העמוד הצג את כרטיס החבר של giladbig חפש הודעות אחרות של giladbig
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה