[Wiki] Một số hàm toán học C++

Các hàm trong chương trinh
UCLN2

template< class T> UCLN2(T a, T b);

Hàm này sẽ tính Ước chung lớn nhất cuả 2 số a,b


đây là toàn bộ code

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

#define CONCAT(name,type) name##_##type
#define CREATE(name,type) \
type CONCAT(name,type)(){\
    type tmp;\
    cin>>tmp;\
    return tmp;\
}
CREATE(get,int)
CREATE(get,long)
CREATE(get,char)
CREATE(get,double)
CREATE(get,float)

template <class T>
T UCLN2(T a,T b){
    if(a==0) return b;
    return UCLN2(b%a,a);
}
template <class T>
T BCNN2(T a,T b){
    return a*b/UCLN2(a,b);
}
template <class T>
T UCLN(int n,...){
    T a,b;
    va_list vl;
    va_start(vl,n);
    a=va_arg(vl,T);
    for(int i=1;i<n;++i){
        b=va_arg(vl,T);
        a=UCLN2<T>(a,b);
    }
    return a;
}
template <class T>
T BCNN(int n,...){
    T a,b;
    va_list vl;
    va_start(vl,n);
    a=va_arg(vl,T);
    for(int i=1;i<n;++i){
        b=va_arg(vl,T);
        a=BCNN2<T>(a,b);
    }
    return a;
}

int main(){
    long a=BCNN<long>(3,get_long(),get_long(),get_long());
    printf("%ld",a);
    return 0;
}

##Edited:

  • Mình vừa viết thêm đoạn macro để tiện cho input nó sẽ tạo ra các hàm get_int(),get_long(),get_float()…
#define CONCAT(name,type) name##_##type
#define CREATE(name,type) \
type CONCAT(name,type)(){\
    type tmp;\
    cin>>tmp;\
    return tmp;\
}
CREATE(get,int)
CREATE(get,long)
CREATE(get,char)
CREATE(get,double)
CREATE(get,float)
5 Likes

@Gio ơi, sao em viết trong này - Dev Chat? Có phải em muốn ủng hộ project Open Source thư viện C++ không?

:+1:

3 Likes

Em viết để mở đầu :smiley: để khuyến khích (à nhầm) kích thích các bạn tham gia :wink:

2 Likes

Nice shot :smile: Nhưng mà sao nhỉ, anh có cảm giác khó khó hiểu sao đấy ^^, có cách nào mình trình bày dễ hiểu hơn không ta?

Ví dụ anh thấy cách trình bày của CPlusPlus.Com khá hay. Sao mình không bắt chước cái cấu trúc nhỉ, đầu tiên là tên hàm, các tham số và ví dụ.

Thư viện mà :smiley: Càng phức tạp thì có nhiều người nghiên cứu!

1 Like

Oh no, ít nhất là nó phải đơn giản lúc đầu để người ta bị dụ vào xem chứ hehe, anh thấy cách trình bày ở project PHP khá ổn.

P/S: @Gio có muốn post của em thành WikiPost không?
P/S2: Anh nghĩ là ta nên có thêm nút like lần thứ 2 cho mấy topic như thế này.

1 Like

Chỉnh sửa mệt quá :tired_face:

1 Like

À há, từ từ sẽ quen, anh là sửa nhiều nhất forum. Đi đâu cũng sửa hết trơn. Nếu mình chuyển thành Wiki Post thì các bạn khác nếu thích có thể sửa dùm em.

Nhưng cũng có thể sửa không theo ý em, rất may là ta có thể delete chỉnh sửa đó.

Để wikiPost đi anh ạ :smile:

1 Like

Yes Sir. Từ nay ai có Trust Level 1 sẽ sửa được bài Wiki, sau này có thể sẽ thay đổi.

1 Like

I moved 2 posts to a new topic: Có nên chỉ cho phép level 2 hoặc 3 sửa Wiki Post

I moved 3 posts to an existing topic: Có nên chỉ cho phép level 2 hoặc 3 sửa Wiki Post?

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?