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)
 
      
    
 để khuyến khích (à nhầm) kích thích các bạn tham gia
 để khuyến khích (à nhầm) kích thích các bạn tham gia 
 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?
 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?
 83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?
    83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?