E2FINL - void multiply(struct stack *b,struct stack *q) {...

Info iconThis preview shows pages 1–3. Sign up to view the full content.

View Full Document Right Arrow Icon
#include<stdio.h> #include<conio.h> #include<math.h> # # define mx 6 # struct stack { int data[mx]; int top; }; } int mul[2*mx+1]; i struct stack add(struct stack *p,struct stack *q,int *c) { struct stack z; int i,max,t1,t2; z.top=-1; if(p->top>q->top) max=p->top; else max=q->top; for(i=0;i<=max;i++) { if(i<=p->top) t1=p->data[i]; else t1=0; if(i<=q->top) t2=q->data[i]; else t2=0; z.data[i]=(t1+t2+(*c))%2; (z.top)++; if(t1+t2+(*c)<2) (*c)=0; else (*c)=1; } return z; } void dectobin(int z,struct stack *p) { int x,t=mx; x=z; p->top=-1; do { (p->top)++; p->data[p->top]=x%2; x=x/2; t--; }while(t>0);
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
} void display(struct stack *p) { int z; z=p->top; while(z>=0) { printf("%d",p->data[z]); z--; } } int bintodec(int mu[]) { int i,x=0; for(i=0;i<10;i++) { x=x+(mu[i]*pow(2,i)); } return x; } void shift(int c,struct stack *a,struct stack *q) { int i=0,temp; temp=a->data[0]; while(i<a->top) { a->data[i]=a->data[i+1]; i++; } a->data[a->top]=c; i=0; while(i<q->top) { q->data[i]=q->data[i+1]; i++; } q->data[q->top]=temp; }
Background image of page 2
Background image of page 3
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: void multiply(struct stack *b,struct stack *q) { int i,k=mx,c=0; struct stack a; a.top=-1; dectobin(0,&a); while(k>0) { if(q->data[0]==1) { a=add(&a,b,&c); } shift(c,&a,q); k--; } for(i=0;i<mx;i++) mul[i]=q->data[i]; for(i=0;i<mx;i++) mul[i+mx]=a.data[i]; mul[2*mx]=c; } void main() { int a,b,c,i; struct stack a1,b1,c1; clrscr(); printf("Enter the two decimal nos"); scanf("%d%d",&a,&b); dectobin(a,&a1); dectobin(b,&b1); printf("First bin no "); display(&a1); printf("\nSecond bin no "); display(&b1); multiply(&a1,&b1); printf("\nThe Multiplication in binary "); for(i=(2*mx);i>=0;i--) printf("%d",mul[i]); c=bintodec(mul); printf("\nThe Multiplication in decimal %d",c); getch(); } /* OUTPUT: Enter the two decimal nos31 32 First bin no 011111 Second bin no 100000 The Multiplication in binary 0001111100000 The Multiplication in decimal 992 */...
View Full Document

This note was uploaded on 10/25/2010 for the course CMPN SEM4 taught by Professor Thakur during the Spring '07 term at University of Mumbai.

Page1 / 3

E2FINL - void multiply(struct stack *b,struct stack *q) {...

This preview shows document pages 1 - 3. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online