Categories: Uncategorized

Sum Of Large Numbers In C

Write a program which can do sum of large numbers having up to 1000 digits

Solution by Arjun Suresh

 

#include <stdio.h>
#include <string.h>
#include <ctype.h>
 
void print(char *a, int l);
int read(char *a);
int sum(char *a, char* b, char * c, int al, int bl); 
int main(void) {
 char a[1000], b[1000], c[1000]; //a and b hold the input numbers and c hold the output number. Each array entry is a digit 
 int al, bl; //for storing the number of digits of the two input numbers
 printf("Enter the first number ");
 al = read(a);
 printf("Enter the second number ");
 bl = read(b);
 int l = sum(a, b, c, al, bl);
 printf("sum = ");
 print(c, l);
 return 0;
}
 
int sum(char *a, char* b, char * c, int al, int bl)
{
 int l = al > bl? al:bl;//l stores the no.of digit of output which may become l+1 due to carry from MSB
        int i = l;
        char carry = 0;
        while(al > 0 && bl > 0)
        {
                char val = a[--al]  + b[--bl] + carry;
                c[i--] = val % 10;
                carry =   val / 10;
        }
        while(al > 0)//If a has more digits than b
        {
                char val = a[--al]  + carry;
                c[i--] = val % 10;
                carry =   val / 10;
        }
        while(bl > 0)//If b has more digits than a
        {
                char val =  b[--bl] + carry;
                c[i--] = val % 10;
                carry =   val / 10;
        }
        c[0] = carry;//Assigning the final carry
 return l+1;//Return the no. of digits of output
} 
 
int read(char *a)
{
 char c;
 int i = 0;
 do
 {
  c = getchar();
 }
 while(isspace(c)); //Reading and discarding any whitespace char typed
 while(isdigit(c))
 {
  a[i++] = c - 48; //getchar returns the ASCII. So, for 1 it returns 49. Subtracting 48, we get the actual int value entered via keyboard 
  c = getchar();
 }
 return i;//Return the no. of digits read
}
 
void print(char *a, int l)
{
 int i;
 if(a[0] != 0)
  printf("%d", a[0]);//If final carry is 0, ignore it
 for(i = 1; i < l; i++)
 {
  printf("%d", a[i]);
 }
 printf("\n");
}

 

ibia

Share
Published by
ibia
Tags: Popular

Recent Posts

GATE CSE 2022 Admissions, Results and Placement Responses

This page shows all details regarding GATE CSE 2022 Admissions including results, admission offers and…

2 years ago

GATE CSE 2021 Admission Responses

Source Add your Response Rank Predictor for GATE CSE 2021 Result Responses: GATE CSE 2021…

3 years ago

GATE CSE Books – More Options

Best Books for GATE CSE with Relevant Chapters to Read  Heads Up! These GATE CSE…

3 years ago

ISI PCB Previous Year Papers with Solution

Indian Statistical Institute(ISI) offers M Tech in Computer Science with the Admission Test Codes MMA/PCA…

3 years ago

ISI JRF Previous Year Papers with Solution

Indian Statistical Institute(ISI) offers Junior Research Fellowships (JRF) in Computer Science, Statistics, Mathematics, Quantitative Economics,…

3 years ago

ISI DCG Previous Year Papers with Solution

 Indian Statistical Institute(ISI) conduct the admission test for Postgraduate Diploma in Computer Applications(PGDCA) with the…

3 years ago