从C ++中的两个可能值向变量分配其他值
问题陈述
我们必须从两个可能的值中为一个变量分配其他变量的值,而无需使用任何条件运算符。
描述
在这个问题中,我们给了一个变量,假设a可以具有两个变量x和y中任何一个的值。现在,我们必须创建一个程序来分配另一个值而不是当前值,而不使用任何条件运算符,即我们无法检查x的值。
让我们举个例子来更好地理解问题-
Input : a = 43 ; x = 43 and y = 21 Output : 21
说明-a的初始值为43,因此我们需要返回另一个值,即21作为a的最终值。
由于不允许我们检查ie的值,因此在代码中使用任何类型的条件语句都是无效的。因此,我们需要查看变量交换值的替代解决方案。为此,可以有多种解决方案,但是我们在这里讨论了最可行,最简单的方法-
使用算术运算符
交换值的一种简单方法是使用两个值的加法/乘法,并对各自相反的操作进行减法/除法,即如果进行了加法则减法,如果使用乘法则除法。
因此,公式变为-
a=x+y-a或a=x*y/a
但是,这里的乘法和除法运算代价更高,有时可能会引发错误。因此,我们为此使用了加减法组合。
示例
#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; }
输出结果
Initial value of a is : 45 After changing the value of a is : 5
使用按位XOR运算符
一种更有效的方法是使用按位XOR运算符。
因此,该值将以以下方式更改-
a=x^y^a;
示例
#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; }
输出结果
Initial value of a is : 56 After changing the value of a is 78