write a code for large nos multilication (upto 200 digits)
Answer Posted / atul kabra
#include<stdio.h>
#include <conio.h>
#include<string.h>
#include<alloc.h>
char * mul(char *, char);
char * add(char *, char *);
void main()
{
char *no1=(char * )malloc(100);
char *no2=(char *)malloc(100);
char *q="0";
char *p;
int i=0,j=0,t=0,l=0;
clrscr();
printf("\n Enter the large no ");
gets(no1);
printf("\n Enter the second no ");
gets(no2);
while(l<strlen(no2))
{
p=mul(no1,no2[l]);
for(j=1;j<=strlen(no2)-l-1;j++)
strcat(p,"0");
q=add(q,p);
l++;
}
printf("\n Multiplication is %s",q);
free(no1);
free(no2);
}
char * mul(char *x, char ch)
{
int i=0,j=0,t=0;
char *p=(char *)malloc(300);
char *a =(char *)malloc(300);
strcpy(p,x);
strrev(p);
while(p[i]!='\0')
{
a[j]=(p[i]-48)*(ch-48)+t;
t=a[j]/10;
a[j]=(a[j]%10)+48;
i++;
j++;
}
if(t!=0)
a[j]=t+48;
else
j--;
a[j+1]='\0';
strrev(a);
free(p);
return(a);
}
char * add(char *p, char *q)
{
char *t=(char *)malloc(300);
int i=0,j=0,x=0,a;
strrev(p);
strrev(q);
while(p[i]!='\0' && q[i]!='\0')
{
a=(p[i]-48)+(q[i]-48)+x;
x=a/10;
a=a%10;
t[i]=a+48;
i++;
}
while(i<strlen(p))
{
a=(p[i]-48)+x;
x=a/10;
a=a%10;
t[i]=a+48;
i++;
}
while(i<strlen(q))
{
a=(q[i]-48)+x;
x=a/10;
a=a%10;
t[i]=a+48;
i++;
}
if(x!=0)
t[i++]=x+48;
t[i]='\0';
strrev(t);
return(t);
}
| Is This Answer Correct ? | 5 Yes | 2 No |
Post New Answer View All Answers
hai iam working in sap sd module for one year and working in lumax ind ltd in desp department but my problem is i have done m.b.a in hr/marketing and working sap sd there is any combination it. can you give right solution of my problem. and what can i do?
What is meant by realloc()?
what is the function of pragma directive in c?
What is the difference between pure virtual function and virtual function?
What are variables and it what way is it different from constants?
Why are algorithms important in c program?
Write programs for String Reversal & Palindrome check
What is the use of in c?
How can I read/write structures from/to data files?
What does s c mean in text?
Why pointers are used?
What is the use of a semicolon (;) at the end of every program statement?
How many types of operators are there in c?
Where can I get an ansi-compatible lint?
Is there a way to have non-constant case labels (i.e. Ranges or arbitrary expressions)?