01/10/2018, 17:37

Tìm số lớn trong 2 số, ko dùng if, không dùng dấu so sánh

Chào mọi người. e mới học lập trình và gặp phải 1 bài như vậy. Đề yêu cầu tìm số lớn nhất trong 2 số và yêu cầu viết tiếp code :
cout <<
Và đề cấm các kí tự sau


Mong mọi người giúp e

rogp10 viết 19:53 ngày 01/10/2018

Uầy, vậy sao xuất kết quả được nhỉ.

p/s: nếu ko thích ternary thì dùng trị tuyệt đối thôi.

Trần Công viết 19:50 ngày 01/10/2018

e k biết nữa @@ đề nó bắt thế

Tao Không Ngu. viết 19:42 ngày 01/10/2018

Hi Trần Công.
Cái này bạn làm ở đâu thế ? Chứ cấm include thì có gì đó sai sai rồi.

P/S Làm thì chắc vẫn được thôi nhưng nó không hợp lý lắm.

Harry Stormborn viết 19:42 ngày 01/10/2018
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main()
{
	int a=4,b=2;
	bool k = a>b ? printf("So lon nhat la a"):printf("So lon nhat la b");
    
    return 0;
}
viết 19:44 ngày 01/10/2018

(((unsigned long long)a - b) & 0x8000000000000000ull) ? b : a;

a, b phải là int hoặc bé hơn unsigned long long nếu ko thì bó tay :V

Võ Trường Trung Hiếu viết 19:52 ngày 01/10/2018

share link baif xem

Trần Hoàn viết 19:50 ngày 01/10/2018

(tổng + abs(hiệu)) / 2 = max;
(tổng - abs(hiệu)) / 2 = min;

Trần Công viết 19:52 ngày 01/10/2018

đề của thầy trong UIT mọi người ạ :v nhưng e tìm ra cách giải rồi, cám ơn mọi người

Phạm Tiến Đạt viết 19:38 ngày 01/10/2018
// Source : https://toidicodedao.com/2015/07/14/mot-so-cau-phong-van-thu-vi-ve-lap-trinh/ 

int getMax(int a, int b) {
   int c = a - b;
   int k = (c << 31) & 0x1;
   int max = a - k * c;
   return max;
}
rogp10 viết 19:37 ngày 01/10/2018

Không cho dùng shift luôn vì shift cũng viết là 2 dấu <. No branching (ternary cũng giống if ) thì hay xài.

Phạm Tiến Đạt viết 19:46 ngày 01/10/2018

nếu đề có cho pascal :

// implement từ code trên
function getMax(a, b : integer) : integer;
    var c, k, max : integer;
    begin
        c := a - b;
        k := (c SHL 31) AND 1;
        Exit(a - (k * c));  
    end;
Bài liên quan
0