Computer >> Máy Tính >  >> Lập trình >> C ++

Thêm một vào số được biểu diễn dưới dạng mảng chữ số trong C ++?

Một số được biểu diễn dưới dạng mảng được lưu trữ từng chữ số của số trong một phần tử duy nhất của mảng. Độ dài của mảng bằng số chữ số trong mảng, tức là độ dài =3 cho số có bốn chữ số. Mỗi phần tử của mảng là một số có một chữ số. Số được lưu trữ theo cách sao cho phần tử cuối cùng lưu trữ chữ số có nghĩa nhỏ nhất của số. Và phần tử đầu tiên lưu trữ chữ số có nghĩa nhất của số. Ví dụ,

Số - 351932 được lưu trữ dưới dạng {3,5,1,9,3,2}

Để thêm một vào số này, bạn cần thêm một vào phần tử cuối cùng của mảng và họ kiểm tra xem có cần thực hiện bất kỳ giá trị nào cần được truyền hay không. Nếu số ở bit cuối cùng là 9 thì giá trị mang được truyền đi và giá trị của phần tử cuối cùng trở thành 0.

Nếu bit được truyền thì phần tử ở vị trí (n-1) sẽ tăng lên một và quá trình truyền mang được kiểm tra. Ví dụ

Thêm một t0 {3,5,7,9} sẽ cho {3,5,8,0}. Tại đây, một lượt thực hiện được truyền đi và giá trị của 7 được tăng lên thành 8.

Ví dụ

#include <bits/stdc++.h>
using namespace std;
void addone(vector<int> &a) {
   int n = a.size();
   a[n-1] += 1;
   int carry = a[n-1]/10;
   a[n-1] = a[n-1] % 10;
   for (int i = n-2; i >= 0; i--) {
      if (carry == 1) {
         a[i] += 1;
         carry = a[i]/10;
         a[i] = a[i] % 10;
      }
   }
   if (carry == 1)
      a.insert(a.begin(), 1);
   }
   int main() {
      vector<int> num{2, 3, 9, 9};
   cout<<"The original number is : ";
      for (int i = 0; i < num.size(); i++)
         cout << num[i];
      cout<<endl;
      addone(num);
   cout<<"The incremented value is : ";
      for (int i = 0; i < num.size(); i++)
         cout << num[i];
      return 0;
}

Đầu ra

The original number is 2399
The incremented value is 2400