Home > Article > Backend Development > Adding one to number represented as array of digits in C Program?
In this section, we will see an interesting question. Suppose a number is given. We need to increase this number by 1. This is a very simple task. But here, we will place the numbers as an array. Each digit of the number is placed as an element of the array. If the number is 512, then it will be stored as {5, 1, 2}. And we also have to use recursive method to increase the number. Let’s look at the algorithm to get a clear idea.
increment(arr, n, index) −
Initially the default value of index is 0 begin if index < n, then if arr[index] < 9, then arr[index] := arr[index] + 1 else arr[index] := 0 increment(arr, n, index + 1) end if if index = n, then arr[n] := 1 n := n + 1 end if end
#include <iostream> #include <cmath> #define MAX 20 using namespace std; void increment(int num_arr[], int &n, int index = 0){ if(index < n){ if(num_arr[index] < 9){ //if digit is less than 9, add 1 num_arr[index]++; }else{ //otherwise increase number recursively num_arr[index] = 0; increment(num_arr, n, index+1); } } if(index == n){ num_arr[n] = 1; //add extra carry n++; //increase n } } void dispNumber(int num_arr[], int n){ for(int i = n-1; i>= 0; i--){ cout << num_arr[i]; } cout << endl; } int numToArr(int num_arr[], int number){ int i = 0; int n = log10(number) + 1; for(int i = i; i< n; i++){ num_arr[i] = number % 10; number /= 10; } return n; } main() { int number = 1782698599; int num_arr[MAX]; int n = numToArr(num_arr, number); cout << "Initial Number: "; dispNumber(num_arr, n); increment(num_arr, n); cout << "Final Number: "; dispNumber(num_arr, n); }
Initial Number: 1782698599 Final Number: 1782698600
The above is the detailed content of Adding one to number represented as array of digits in C Program?. For more information, please follow other related articles on the PHP Chinese website!