← Trang chủ

[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)

Tác giả

Gio

Đăng vào

Bài viết gốc

Thông tin

Proudly published with Statinamic