Rumah >pembangunan bahagian belakang >C++ >Menambah satu pada nombor yang diwakili sebagai tatasusunan digit dalam Program C?

Menambah satu pada nombor yang diwakili sebagai tatasusunan digit dalam Program C?

PHPz
PHPzke hadapan
2023-09-07 12:49:171070semak imbas

Adding one to number represented as array of digits in C Program?

Dalam bahagian ini, kita akan melihat soalan yang menarik. Katakan nombor diberikan. Kita perlu menambah bilangan ini sebanyak 1. Ini adalah tugas yang sangat mudah. Tetapi di sini, kita akan meletakkan nombor sebagai tatasusunan. Setiap digit nombor diletakkan sebagai elemen tatasusunan. Jika nombornya ialah 512, maka ia akan disimpan sebagai {5, 1, 2}. Dan kita juga perlu menggunakan kaedah rekursif untuk menambah bilangan. Mari lihat algoritma untuk mendapatkan idea yang jelas.

Algoritma

kenaikan(arr, n, indeks) −

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

Contoh

#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);
}

Output

Initial Number: 1782698599
Final Number: 1782698600

Atas ialah kandungan terperinci Menambah satu pada nombor yang diwakili sebagai tatasusunan digit dalam Program C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam