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

Đếm số hoạt động thực hiện cần thiết để thêm hai số trong C ++

Chúng tôi được cung cấp hai số num_1 và num_2. Mục đích là để đếm số lượng các hoạt động mang theo yêu cầu nếu các số được thêm vào. Nếu các số là 123 và 157 thì các phép toán mang sẽ là 1. (7 + 3 =10, 1 + 2 + 5 =8, 1 + 1 =2).

Hãy cho chúng tôi hiểu với các ví dụ

Đầu vào - num_1 =432 num_2 =638

Đầu ra - Đếm số thao tác thực hiện cần thiết để cộng hai số là - 2

Giải thích - Từ phải sang trái thêm các chữ số và đếm mang -

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

Đầu vào - num_1 =9999 num_2 =111

Đầu ra - Đếm số thao tác thực hiện cần thiết để cộng hai số là - 4

Giải thích - Từ phải sang trái thêm các chữ số và đếm mang -

(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

Cách tiếp cận được sử dụng trong chương trình dưới đây như sau

Chúng tôi sẽ chuyển cả hai số thành chuỗi. Bắt đầu duyệt qua các chuỗi từ cuối, chuyển đổi ký tự thành số nguyên, thêm cả hai và cả lần mang trước đó (0 cho lần lặp đầu tiên), nếu giá trị> 10 thì đặt giá trị là 1. Nếu lần mang là 1 số gia tăng của lần mang.

  • Lấy hai số là num_1 và num_2.

  • Hàm carry_add_two_numbers (num_1, num_2) nhận cả số và trả về số lượng thực hiện cần thiết khi cả hai được thêm vào.

  • Chuyển đổi cả hai số thành chuỗi bằng cách sử dụng to_string (x) và lưu trữ trong str_1 và str_2.

  • Lấy độ dài của cả hai chuỗi bằng length () là lenght_str_1 và length_str_2.

  • Lấy số lượng ban đầu là 0 và số mang ban đầu cũng giống như 0.

  • Trong khi cả hai độ dài đều khác 0.

  • Tiếp tục chuyển đổi từ ký tự cuối cùng thành số nguyên và lưu trữ số nguyên trong các biến i và j.

  • Giảm độ dài của cả hai chuỗi.

  • Lấy biến để thêm dưới dạng i + j + carry.

  • Nếu thêm> 10 thì số gia tăng (khi nó được thực hiện). Và đặt cary =1, ngược lại đặt carry =0 cho lần lặp tiếp theo.

  • Sau khi kết thúc tất cả các lần lặp, số đếm sẽ có tổng số lần mang.

  • Kết quả là số lượt trả lại.

Ví dụ

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

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

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