Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

In C: Requirements: Introducing the library Menu (Big integer arithmetic) : 1- A

ID: 3858552 • Letter: I

Question

In C:

Requirements:

Introducing the library

Menu (Big integer arithmetic) :

1- Adding two big integers (two options: user mode, random mode)

2- Multiplication of two big integers using classic algorithm (two options: user mode, random mode)

3- Multiplication of two big integers using Karatsuba algorithm (two options: user mode, random mode) o

4- Multiplication of two big integers using Toom-Cook algorithm (two options: user mode, random mode)

5- Comparing the execution time of multiplication algorithms (two options: user mode, random mode)

6- Testing the correctness of algorithms

7- Continue or quit

Then Executing the commands (1-7)

Explanation / Answer

// Adding two big integers .
#include<stdio.h>
#include<string.h>
int main(){
int a[255],b[255],sum[255];
int ac=0,bc=0,sc=0;
int reminder = 0,i;
char num1[255],num2[255],*pa,*pb;
printf("Enter first number : ");
scanf("%s",&num1); //taking first number from user in string format
printf(" Enter second number : ");
scanf("%s",&num2); //taking second number from user in string format

pa = num1; //pointer to first number
pb = num2; //pointer to second number

//storing first string number in the integer array
while(*pa){ //loop while run untill it get null character
a[ac++] = *pa++ - 48; //48 is ASCII value of character zero
}

//storing first string number in the integer array
while(*pb){
b[bc++] = *pb++ - 48;
}

//additin of two numbers
if(ac<bc){
for(i = ac;i > 0;i--){
sum[sc++]= ((a[i-1] + b[--bc]) + reminder)%10;
reminder = ((a[i-1] + b[bc]) + reminder)/10;
}
while(bc>0){
sum[sc++] = b[--bc] + reminder;
reminder = 0;
}
}
else{
for(i = bc;i > 0;i--){
sum[sc++]= ((b[i-1] + a[--ac]) + reminder)%10;
reminder = ((b[i-1] + a[ac]) + reminder)/10;
}
if(ac==0 && reminder==1)
sum[sc++] = reminder;
while(ac>0){
sum[sc++] = a[--ac] + reminder;
reminder = 0;
}
}
printf("Sum of both number is : ");
for(i=sc-1;i>=0;i--){
printf("%d",sum[i]);
}
return 0;
}

//Multiplication of two big integers
#include <stdio.h>
#include <string.h>

int main()
{
int a[100],b[100];
int ans[200]={0};
int i,j,tmp;
char s1[101],s2[101];
scanf(" %s",s1);
scanf(" %s",s2);
int l1 = strlen(s1);
int l2 = strlen(s2);
for(i = l1-1,j=0;i>=0;i--,j++)
{
a[j] = s1[i]-'0';
}
for(i = l2-1,j=0;i>=0;i--,j++)
{
b[j] = s2[i]-'0';
}
for(i = 0;i < l2;i++)
{
for(j = 0;j < l1;j++)
{
ans[i+j] += b[i]*a[j];
}
}
for(i = 0;i < l1+l2;i++)
{
tmp = ans[i]/10;
ans[i] = ans[i]%10;
ans[i+1] = ans[i+1] + tmp;
}
for(i = l1+l2; i>= 0;i--)
{
if(ans[i] > 0)
break;
}
printf("Product : ");
for(;i >= 0;i--)
{
printf("%d",ans[i]);
}
return 0;
}