c++重载函数的使用,函数不明确

设计一个函数 rank,要求:
该函数无返回值,带3个整型参数;
要求函数实现将这3个数升序排列;
在main函数中将排序前和排序后的结果写入文件mysort.txt
中(思考:无返回值,如何实现将结果带回主调函数?);
重载该函数,实现3个字符的升序排列,3个双精度浮点数的升
序排列,并如上要求,将排序结果写入文件mysort.txt中。
我先不写入文件,这样做为啥rank会显示不明确
#include
using namespace std;
int a,b,c;
char e,f,g;
double h,j,k;
void rank(int m,int n,int i);
void rank(char m,char n,char i);
void rank(double m,double n,double i);
int main()
{
cout<<"请输入三个整数"<
cin>>a>>b>>c;
rank(a,b,c);
cout<
cout<<"请输入三个字符型数据"<
cin>>e>>f>>g;
rank(e,f,g);
cout<
cout<<"请输入三个双精度浮点型数据"<
cin>>h>>j>>k;
rank(h,j,k);
cout<
}
void rank(int m,int n,int i)
{
extern int a,b,c;
int d;
if(m>n)
{
d=m;
m=n;
n=d;
}
if(m>i)
{
d=m;
m=i;
i=d;
}
if(n>i)
{
d=n;
n=i;
i=d;
}
a=m;
b=n;
c=i;
cout<
}
void rank(char m,char n,char i)
{
extern char g,e,f;
char d;
if(m>n)
{
d=m;
m=n;
n=d;
}
if(m>i)
{
d=m;
m=i;
i=d;
}
if(n>i)
{
d=n;
n=i;
i=d;
}
e=m;
f=n;
g=i;
}

void rank(double m,double n,double i)
{
extern double h,j,k;
double d;
if(m>n)
{
d=m;
m=n;
n=d;
}
if(m>i)
{
d=m;
m=i;
i=d;
}
if(n>i)
{
d=n;
n=i;
i=d;
}
h=m;
j=n;
k=i;
}