Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

การบวก 1 กับตัวเลขที่แทนเป็นอาเรย์ของหลักในโปรแกรม C


ในส่วนนี้เราจะดูปัญหาเชิงสนุกสนาน สมมติมีตัวเลขหนึ่ง ต้องเพิ่มตัวเลขนี้ขึ้น 1 ง่ายมาก แต่ที่นี่เราเก็บตัวเลขเป็นอาเรย์ แต่ละหลักเป็นองค์ประกอบของอาเรย์ ถ้าตัวเลขคือ 512 จะเก็บเป็น {5, 1, 2} และต้องเพิ่มตัวเลขด้วยวิธีเรียกซ้ำ

อัลกอริทึม

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
  end if
  if index = n, then
    arr[n] := 1
    n := n + 1
  end if
end

ตัวอย่างโค้ด C++

#include 
#include 
#define MAX 20
using namespace std;
void increment(int num_arr[], int &n, int index = 0){
    if(index < n){
        if(num_arr[index] < 9){ // ถ้าหลักน้อยกว่า 9 บวก 1
            num_arr[index]++;
        }else{ // มิฉะนั้นเพิ่มตัวเลขแบบเรียกซ้ำ
            num_arr[index] = 0;
            increment(num_arr, n, index+1);
        }
    }
    if(index == n){
        num_arr[n] = 1; // เพิ่ม carry เพิ่มเติม
        n++; // เพิ่ม 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