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

Gán giá trị khác cho một biến từ hai giá trị có thể có trong C ++

Tuyên bố vấn đề

chúng ta phải gán cho một biến giá trị của các biến khác từ hai giá trị có thể mà không sử dụng bất kỳ toán tử điều kiện nào.

Mô tả

Trong bài toán này, chúng ta được cung cấp một biến, giả sử a có thể có giá trị bằng bất kỳ giá trị nào trong hai biến x và y. Bây giờ, chúng tôi phải tạo một chương trình để gán giá trị của một giá trị khác với giá trị hiện tại của nó mà không sử dụng bất kỳ toán tử điều kiện nào, tức là chúng tôi không thể kiểm tra giá trị của x.

Hãy lấy một ví dụ để hiểu rõ vấn đề hơn -

Input : a = 43 ; x = 43 and y = 21
Output : 21

Giải thích - giá trị ban đầu của a là 43 vì vậy chúng ta cần trả về giá trị khác, tức là 21 làm giá trị cuối cùng của a.

Vì chúng tôi không được phép kiểm tra giá trị của một nghĩa là sử dụng bất kỳ loại câu lệnh điều kiện nào không hợp lệ trong mã. Vì vậy, chúng ta cần xem các giải pháp thay thế cho giá trị hoán đổi của biến. Đối với điều này, có thể có nhiều giải pháp nhưng chúng tôi đang thảo luận về tính khả thi và dễ dàng nhất tại đây -

Sử dụng toán tử số học

Một trong những cách dễ dàng để hoán đổi giá trị là sử dụng phép cộng / nhân hai giá trị và trừ / chia cho các phép toán đối lập tương ứng, tức là trừ nếu chúng ta đã thực hiện cộng và chia nếu sử dụng phép nhân.

Vì vậy, công thức trở thành -

a =x + y - a hoặc a =x * y / a

Nhưng ở đây các phép toán nhân và chia tốn kém hơn và đôi khi có thể gây ra lỗi. Vì vậy, chúng tôi đã sử dụng kết hợp cộng - trừ cho việc này.

Ví dụ

#include <iostream>
using namespace std;
int main(){
   int x = 45;
   int y = 5;
   int a = x;
   cout<<"Initial value of a is : "<<a;
   a = x+y - a;
   cout<<"\nAfter changing the value of a is : "<<a;
}

Đầu ra

Initial value of a is : 45
After changing the value of a is : 5

Sử dụng toán tử XOR bitwise

Một cách hiệu quả hơn có thể là sử dụng toán tử XOR bit.

Vì vậy, giá trị sẽ được thay đổi theo cách sau -

a =x ^ y ^ a;

Ví dụ

#include <iostream>
using namespace std;
int main(){
   int x = 56;
   int y = 78;
   int a = x;
   cout<<"Initial value of a is : "<< a;
   a = x^y^a;
   cout<<"\nAfter changing the value of a is "<<a;
   return 0;
}

Đầu ra

Initial value of a is : 56
After changing the value of a is 78