Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

กำหนดค่าอื่นให้กับตัวแปรจากค่าที่เป็นไปได้สองค่าใน C++


คำชี้แจงปัญหา

เราต้องกำหนดค่าตัวแปรอื่น ๆ ให้กับตัวแปรจากสองค่าที่เป็นไปได้โดยไม่ต้องใช้ตัวดำเนินการตามเงื่อนไข

คำอธิบาย

ในปัญหานี้ เราได้รับตัวแปรหนึ่ง สมมุติว่า a มีค่าของตัวแปร x และ y สองตัวใดก็ได้ ตอนนี้ เราต้องสร้างโปรแกรมเพื่อกำหนดค่าของอย่างอื่นที่ไม่ใช่ค่าปัจจุบันโดยไม่ต้องใช้ตัวดำเนินการตามเงื่อนไขใดๆ นั่นคือเราไม่สามารถตรวจสอบค่าของ x ได้

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากันดีกว่า −

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

คำอธิบาย − ค่าเริ่มต้นของ a คือ 43 ดังนั้นเราต้องคืนค่าอีกค่าหนึ่ง นั่นคือ 21 เป็นค่าสุดท้ายของ a

เนื่องจากเราไม่ได้รับอนุญาตให้ตรวจสอบค่าของ i.e. การใช้คำสั่งแบบมีเงื่อนไขใดๆ จึงไม่ถูกต้องในโค้ด ดังนั้น เราต้องดูวิธีแก้ปัญหาอื่นสำหรับค่า swap ของตัวแปร สำหรับสิ่งนี้ อาจมีหลายวิธีแก้ปัญหา แต่เรากำลังพูดถึงความเป็นไปได้และง่ายที่สุดที่นี่ -

การใช้ตัวดำเนินการทางคณิตศาสตร์

วิธีง่ายๆ วิธีหนึ่งในการสลับค่าคือการใช้การบวก/การคูณของสองค่าและการลบ/หารสำหรับการดำเนินการที่ตรงกันข้ามตามลำดับ เช่น การลบ หากเราได้บวกและหารแล้วหากใช้การคูณ

ดังนั้นสูตรจะกลายเป็น −

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