Maison  >  Article  >  développement back-end  >  Ajouter un au nombre représenté sous forme de tableau de chiffres dans le programme C ?

Ajouter un au nombre représenté sous forme de tableau de chiffres dans le programme C ?

PHPz
PHPzavant
2023-09-07 12:49:171032parcourir

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

Dans cette section, nous verrons une question intéressante. Supposons qu'un nombre soit donné. Nous devons augmenter ce nombre de 1. C'est une tâche très simple. Mais ici, nous placerons les nombres sous forme de tableau. Chaque chiffre du nombre est placé comme élément du tableau. Si le nombre est 512, alors il sera stocké sous {5, 1, 2}. Et nous devons également utiliser une méthode récursive pour augmenter le nombre. Regardons l'algorithme pour avoir une idée claire.

Algorithme

incrément (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

Exemple

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

Sortie

Initial Number: 1782698599
Final Number: 1782698600

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer