Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Tìm Max Trong 3 Số Không Cần Dùng if ... else

  1. #1
    Ngày gia nhập
    11 2014
    Bài viết
    85

    Mặc định Tìm Max Trong 3 Số Không Cần Dùng if ... else

    Code:
    int max(int a, int b, int c)
    {
    	return a * (a > b & a > c) +
    		b * (b > a & b > c) +
    		c * (c > a & c > b);
    }
    Note: (a > b & a > c) - chỉ trả giá trị 1 hoặc 0
    Học lập trình bắt đầu từ đâu ?

    https://www.youtube.com/HWStudio2019

  2. #2
    Ngày gia nhập
    03 2015
    Bài viết
    43

    Không if else thì cứ dùng phép toán điều kiện ) có gì đâu

  3. #3
    Ngày gia nhập
    06 2015
    Nơi ở
    Lagi - Bình Thuận
    Bài viết
    1,558

    Trong c++ / c# có Misc Operators :
    Condition ? X : Y

    Trong VB có hàm iff

    Còn về hiệu suất chưa bàn.
    ĐT : 0906.83.71.25
    email : vn8hien62@yahoo.com
    http://diendan.congdongcviet.com/threads/t334310::chu-quoc-ngu-da-lac-hau-chua.cpp?p=815219#post815219

  4. #4
    Ngày gia nhập
    12 2020
    Nơi ở
    Sai Gon
    Bài viết
    1

    Trích dẫn Nguyên bản được gửi bởi programmer2014 Xem bài viết
    Code:
    int max(int a, int b, int c)
    {
    	return a * (a > b & a > c) +
    		b * (b > a & b > c) +
    		c * (c > a & c > b);
    }
    Note: (a > b & a > c) - chỉ trả giá trị 1 hoặc 0
    Cũng theo nguyên lý (a>b) cho giá trị là 1 nếu nó đúng và cho giá trị 0 nếu nó sai, mình đề nghị một cách viết khác có vẻ đơn giản hơn :

    max = c*(a<b)*(b<c) + a*(b<c)*(c<a) + b*(c<a)*(a<b);
    min = a*(a<b)*(b<c) + b*(b<c)*(c<a) + c*(c<a)*(a<b);

    Cách nhớ như sau :
    Giả sử biểu thức (a<b) đúng và (b<c) cũng đúng (tức là a<b<c) thì a là min và c là max. Lúc này biểu thức c>a sai nên cho giá trị 0
    Nên muốn tìm max ta nhân c với (a<b)*(b<c) tức là c*(a<b)*(b<c)
    Nhưng vì ta không biết cái nào đúng trong 3 cái : (a<b) hay là (b<c) hay là (c<a), nên ta gộp chung lại thành
    max = c*(a<b)*(b<c) + a*(b<c)*(c<a) + b*(c<a)*(a<b);
    Tương tự cho min :
    min = a*(a<b)*(b<c) + b*(b<c)*(c<a) + c*(c<a)*(a<b);

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn