Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

Boolean Array Puzzle: เปลี่ยนค่า array 2 ตัวเป็น 0 ทั้งคู่ ในภาษา C

ปริศนา: กำหนด array ขนาด 2 ที่มีค่าหนึ่งเป็น 0 อีกตัวอาจเป็น 0 หรือ 1 ต้องทำให้ทั้งคู่เป็น 0 โดยห้ามใช้ loop, conditional, assignment โดยตรง, ใช้ได้แค่ bitwise complement (~)

วิธีแก้

ใช้ a[a[1]] = a[!a[1]] หรือ a[a[1]] = a[a[0]]

โค้ดตัวอย่าง

#include <iostream>
using namespace std;

void makeZero(int a[2]) {
    a[a[1]] = a[!a[1]];
}

int main() {
    int a[] = {1, 0};
    makeZero(a);
    cout << "arr[0] = " << a[0] << endl;
    cout << "arr[1] = " << a[1];
    return 0;
}

ผลลัพธ์

arr[0] = 0
arr[1] = 0