Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

การเพิ่มหนึ่งต่อตัวเลขที่แสดงเป็นอาร์เรย์ของตัวเลขใน C ++ หรือไม่


ตัวเลขที่แสดงเป็นอาร์เรย์จะเก็บตัวเลขแต่ละหลักของตัวเลขไว้ในองค์ประกอบเดียวของอาร์เรย์ ความยาวของอาร์เรย์เท่ากับจำนวนหลักในอาร์เรย์ เช่น ความยาว =3 สำหรับตัวเลขสี่หลัก แต่ละองค์ประกอบของอาร์เรย์เป็นตัวเลขหลักเดียว ตัวเลขถูกจัดเก็บในลักษณะที่องค์ประกอบสุดท้ายเก็บตัวเลขที่มีนัยสำคัญน้อยที่สุดของตัวเลข และองค์ประกอบแรกเก็บหลักที่สำคัญที่สุดของตัวเลข ตัวอย่างเช่น

หมายเลข − 351932 ถูกเก็บไว้เป็น {3,5,1,9,3,2}

ในการเพิ่มหมายเลขนี้คุณต้องเพิ่มหนึ่งรายการในองค์ประกอบสุดท้ายของอาร์เรย์และตรวจสอบว่าการพกพาใด ๆ จำเป็นต้องเผยแพร่หรือไม่ หากตัวเลขที่บิตสุดท้ายคือ 9 การพกพาจะถูกเผยแพร่และค่าขององค์ประกอบสุดท้ายจะกลายเป็น 0

หากบิตถูกเผยแพร่ องค์ประกอบที่ตำแหน่ง (n-1) จะเพิ่มขึ้นหนึ่งรายการ และตรวจสอบการถ่ายทอดแบบพกพา ตัวอย่างเช่น

เพิ่มหนึ่ง t0 {3,5,7,9} ให้ {3,5,8,0} ที่นี่การพกพาถูกเผยแพร่และมูลค่าเจ็ดเพิ่มขึ้นเป็น 8

ตัวอย่าง

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

ผลลัพธ์

The original number is 2399
The incremented value is 2400