· برنامج يقوم بإحدى العمليات بين العنصر الأول من الطابور مع العنصر الثاني ثم يقوم بتخزين ناتج العملية في موقع العنصر الثاني ثم يقوم بعملية أخرى بين العنصر الثالث و بين الناتج الذي تم تخزينه في العنصر الثاني. حيث يتم إدخال العمليات عن طريق المستخدم .
void main ( ) { int x , i ;struct que q , s1 ; s2 ; char ch ; float a , b ; clrscr ( ) ; init (q) ; init (s1) ; init (s2) ; while (! Full (q) ) { cin>> x; insert( q , x ) ; } for (i=1 ; i { cin>> ch; insert (s2 , ch ) ; } a= remove (q); insert(s1 , a); while (! empty(s2) ) { ch= remove(s2); Switch(ch) { case '+' : { b=remove(q); b=a+b; Insert(s1,b); a=b; } break ; case '*' : { b=remove(q); b=a*b; Insert(s1,b); a=b; } break ; case '-' : { b=remove(q); b=a-b; Insert(s1,b); a=b; } break ; case '/' : { b=remove(q); b=a/b; Insert(s1,b); a=b; } break ; } } while (! empty(s1) ) cout << remove(s1)<<" " ; getch( ); } | # include # include # define size 5 struct que { int rear , front ; Float a[size]; } ; void init ( struct que & s ) { s.rear = -1 ; s.front = 0 ; } void insert (struct que & s , int c ) { if (s.rear == size-1) s.rear = -1 ; s.a[++s.rear] = c ; } int remove ( struct que & s ) { if (s.front == size ) s.front = 0; Return ( s.a[s.front++] ); } int full ( struct que s ) { if ( s.rear >= s.front ) s.reae-= s.front ; return (s.rear==size-1); } int empty (struct que s ) { return (s.rear+1==s.front ) ; } |
عدل سابقا من قبل عمار لقمان في السبت مايو 17, 2008 8:03 am عدل 1 مرات