30/09/2018, 16:12

[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)
Nguyễn Minh Dũng viết 18:27 ngày 30/09/2018

@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?

Gió viết 18:16 ngày 30/09/2018

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

Nguyễn Minh Dũng viết 18:19 ngày 30/09/2018

Nice shot 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ụ.

Gió viết 18:20 ngày 30/09/2018

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

Nguyễn Minh Dũng viết 18:13 ngày 30/09/2018

Càng phức tạp thì có nhiều người nghiên cứu!

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.

Anh đã thấy câu lệnh IF của em ở đây Anh mới tham gia đóng góp cho project của em đấy nhé, sửa lại trình bày cho đẹp thôi. Em biết xem history của một sửa đổi chưa?

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.

Gió viết 18:16 ngày 30/09/2018

Chỉnh sửa mệt quá

Nguyễn Minh Dũng viết 18:16 ngày 30/09/2018

À 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 đó.

Gió viết 18:28 ngày 30/09/2018

Để wikiPost đi anh ạ

Nguyễn Minh Dũng viết 18:18 ngày 30/09/2018

Để wikiPost đi anh ạ

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

Nguyễn Minh Dũng viết 18:24 ngày 30/09/2018

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

Nguyễn Minh Dũng viết 18:23 ngày 30/09/2018

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

Bài liên quan
0