Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 가능한 두 값의 변수에 다른 값 할당

<시간/>

문제 설명

조건 연산자를 사용하지 않고 두 개의 가능한 값에서 다른 변수의 값을 변수에 할당해야 합니다.

설명

이 문제에서는 두 변수 x와 y 중 하나의 값을 가질 수 있는 변수 a가 주어집니다. 이제 조건 연산자를 사용하지 않고 현재 값이 아닌 다른 값을 할당하는 프로그램을 만들어야 합니다. 즉, x의 값을 확인할 수 없습니다.

문제를 더 잘 이해하기 위해 예를 들어 보겠습니다 -

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

설명 - 의 초기 값은 43이므로 다른 값, 즉 21을 a의 최종 값으로 반환해야 합니다.

우리는 값을 확인할 수 없기 때문에 즉, 어떤 종류의 조건문의 사용도 코드에서 유효하지 않습니다. 따라서 변수의 스왑 값에 대한 대체 솔루션을 찾아야 합니다. 이를 위해 여러 솔루션이 있을 수 있지만 여기에서 가장 실현 가능하고 쉬운 방법에 대해 논의합니다. −

산술 연산자 사용

값을 교환하는 쉬운 방법 중 하나는 두 값의 더하기/곱하기를 사용하고 반대 연산에 대해 빼기/나누기입니다. 예를 들어 더하기를 수행한 경우 빼기를 사용하고 곱하기를 사용하는 경우 나누기를 수행합니다.

따라서 공식은 -

가 됩니다.

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