//=====================
//5.3 最大公约数排序
//=====================
#include
#include
#include
using namespace std;
int maxC(int v1,int v2);//最大公约数
void swap(int &a,int &b);//交换排序
void main()
{
ifstream in("abc.txt");
vector a,cmp;
for(int i;in>>i;a.push_back(i));//读入abc.txt的数据,放进a向量
for(int j=0;j<a.size();++j)
{
int a1=a[j];
int b1=a[j+1];
int c=maxC(a1,b1);
cmp.push_back(c);//把各个公约数放进cmp向量
}
for(vector::size_type ix=0;ix<cmp.size();++ix)
for(vector::size_type ix2=ix+1;ix!=cmp.size();++ix2)
if(cmp[ix]<cmp[ix2])
swap(cmp[ix],cmp[ix2]);//排序cmp元素
for(int ii=0;i<cmp.size();++i)
cout<<cmp[ii]<<endl;//输出
}
int maxC(int v1,int v2)//最大公约数函数
{
while(v2)
{
int temp=v2;
v2=v1%v2;
v1=temp;
}
return v1;
}
void swap(int &a,int &b)//交换函数
{
int temp=b;
b=a;
a=temp;
}
这个是 最大公约数排序 的程序 vc6.0 上语法没错 可是运行的时候dos框都会出现没有响应的情况 ....
小弟搞不懂了,故来求解
|