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

นับจำนวนการดำเนินการที่ต้องใช้ในการบวกตัวเลขสองตัวใน C++


เราได้รับตัวเลขสองตัว num_1 และ num_2 เป้าหมายคือการนับจำนวนการดำเนินการที่จำเป็นหากมีการเพิ่มตัวเลข หากตัวเลขเป็น 123 และ 157 การดำเนินการถือจะเป็น 1 (7+3=10, 1+2+5=8, 1+1=2 )

ให้เราเข้าใจด้วยตัวอย่าง

ป้อนข้อมูล − num_1=432 num_2=638

ผลผลิต − จำนวนการดำเนินการพกพาที่จำเป็นในการบวกตัวเลขสองตัวคือ − 2

คำอธิบาย − จากขวาไปซ้ายการบวกหลักและการนับการถือ -

(2+9=10, carry 1 ) count=1,
(1+3+3=7, carry 0 ) count=1,
(4+6=10, carry 1 ) count=2

ป้อนข้อมูล − num_1=9999 num_2=111

ผลผลิต − จำนวนการดำเนินการพกพาที่ต้องบวกสองตัวคือ − 4

คำอธิบาย − จากขวาไปซ้ายการบวกหลักและการนับการถือ -

(9+1=10, carry 1 ) count=1,
(1+9+1=11, carry 1 ) count=2,
(1+9+1=11, carry 1 ) count=3,
(1+9=10, carry 1) count=4

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

เราจะแปลงตัวเลขทั้งสองเป็นสตริง เริ่มการข้ามผ่านสตริงจากจุดสิ้นสุด แปลงอักขระเป็นจำนวนเต็ม เพิ่มทั้งการพกพาก่อนหน้า ( 0 สำหรับการวนซ้ำครั้งแรก ) ถ้าค่า>10 ตั้งค่าการพกพาเป็น 1 หากการพกพาเพิ่มขึ้น 1 ครั้ง ให้นับการพกพา

  • ใช้ตัวเลขสองตัวเป็น num_1 และ num_2

  • ฟังก์ชัน carry_add_two_numbers(num_1, num_2) รับทั้งจำนวนและจำนวนการส่งคืนที่จำเป็นเมื่อมีการเพิ่มทั้งคู่

  • แปลงตัวเลขทั้งสองเป็นสตริงโดยใช้ to_string(x) และเก็บไว้ใน str_1 และ str_2

  • ใช้ความยาวของทั้งสองสตริงโดยใช้ length() เป็น lenght_str_1 และ length_str_2

  • นับเริ่มต้นเป็น 0 และการพกพาเริ่มต้นก็เหมือนกับ 0

  • ในขณะที่ความยาวทั้งสองไม่เป็นศูนย์

  • ให้แปลงจากอักขระตัวสุดท้ายเป็นจำนวนเต็มและเก็บจำนวนเต็มไว้ในตัวแปร i และ j

  • ลดความยาวของสายทั้งสอง

  • นำตัวแปรมาบวกเป็น i+j+carry

  • หากเพิ่ม>10 ให้นับการเพิ่มขึ้น (ตามที่มีการดำเนินการ) และตั้งค่า cary=1.มิฉะนั้น ตั้งค่า carry=0 สำหรับการวนซ้ำครั้งต่อไป

  • หลังจากสิ้นสุดการทำซ้ำทั้งหมด การนับจะมีจำนวนการบรรทุกทั้งหมด

  • ผลตอบแทนนับเป็นผลลัพธ์

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
int carry_add_two_numbers(int num_1, int num_2){
   string str_1 = to_string(num_1);
   int length_str_1 = str_1.length();
   string str_2 = to_string(num_2);
   int length_str_2 = str_2.length();
   int count = 0, carr = 0;
   while(length_str_1 != 0 || length_str_2 != 0){
      int i = 0, j = 0;
      if (length_str_1 > 0){
         i = str_1[length_str_1 - 1] - '0';
         length_str_1--;
      }
      if (length_str_2 > 0){
         j = str_2[length_str_2 - 1] - '0';
         length_str_2--;
      }
      int add = i + j + carr;
      if (add >= 10){
         carr = 1;
         count++;
      }
      else{
         carr = 0;
      }
   }
   return count;
}
int main(){
   int num_1 = 234578;
   int num_2 = 1234;
   int count = carry_add_two_numbers(num_1, num_2);
   cout<<"Count of number of carry operations required to add two numbers are: "<<count;
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

Count of number of carry operations required to add two numbers are: 2