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