เราได้รับตัวเลขสองตัว 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