Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tìm max của 4 số không dùng điều kiện hay bitwise trong C++

Cho 4 số nguyên. Tìm số lớn nhất không dùng toán tử điều kiện (if/else/?:) hay bitwise.

Mô tả

Tìm max(a,b,c,d) không dùng if, ?:, &, |, ^, ~, <<, >>.

Ví dụ

Đầu vào: a=4, b=7, c=1, d=9

Đầu ra: 9

Phương pháp giải

So sánh 2 số bằng mảng 2 phần tử và chỉ số boolean:

  • Tạo mảng arr[2] = {x, y}
  • Chỉ số max = !(arr[0] - arr[1] + abs(arr[0] - arr[1]))
  • Nếu arr[0] > arr[1]: hiệu âm + abs dương = 0 → !0 = 1 (true) → arr[1] (sai!)

Sửa lỗi logic: Công thức đúng: `(arr[0] - arr[1] + abs(arr[0] - arr[1])) / (2 * abs(arr[0] - arr[1]))` hoặc đơn giản dùng `(arr[0] < arr[1])` chuyển thành int.

Cách tiếp cận so sánh cặp: max = a; max = findMax(max, b); max = findMax(max, c); max = findMax(max, d).

Chương trình minh họa

#include <iostream> 
#include <cstdlib> 
using namespace std; 

int findMax(int x, int y) { 
    int arr[2] = {x, y}; 
    bool MaxIndex = (arr[0] < arr[1]); // true=1 nếu y lớn hơn 
    return arr[MaxIndex]; 
} 

int CalcMaxElement(int a, int b, int c, int d) { 
    int max = a; 
    max = findMax(max, b); 
    max = findMax(max, c); 
    max = findMax(max, d); 
    return max; 
} 

int main() { 
    int a = 4, b = 9, c = 7, d = 1; 
    cout << "The maximum of four numbers is " << CalcMaxElement(a, b, c, d); 
    return 0; 
}

Đầu ra: The maximum of four numbers is 9