注册 登录
编程论坛 C++教室

数组或者向量能解决的问题

laogao3232 发布于 2007-09-20 17:41, 567 次点击
题目要求从一个.TXT文件中输入一系列的数,每个一行,求每一行的最大公约数,然后按从小到大顺序输出。
我想最大公约数要放在一个地方。文件中的数有多少个不确定,要用向量,可是用向量老是说有歧义,用数组又不能定义大小。谁能给个相关的程序啊。
#include<iostream.h>
#include<fstream.h>
#include<cmath>
void main()
{
int num1=0,num2=0,i=0,s=0,j=0,zui=0,count=0,n=0,k=0;
fstream _open_file;
_open_file.open("d:\\abc.txt",ios::nocreate|ios::in);
if (!_open_file)
{ cerr<<"error opening the file"<<endl;
return;
}

while(!_open_file.eof())
{
_open_file>>num1;
_open_file.ignore();
_open_file>>num2;
count++;} //记数多少对数据
const int n=count;
int a[n]; //定义数组
for(k=1;k<count;k++)
{ while(!_open_file.eof())
{
_open_file>>num1;
_open_file.ignore();
_open_file>>num2;
cout<<num1<<" "<<num2<<endl;
if(num1>=num2)
{ s=sqrt(num1);
for(i=1;i<=s;i++)
{if(0==num1%i && 0==num2%i)
zui=i;}
cout<<i<<" ";}
else
{s=sqrt(num2);
for(i=1;i<=s;i++)
{if(0==num2%i&&0==num1%i)
zui=i;}
cout<<i<<" ";}

a[k]=zui;}
cout<<endl;}
}
3 回复
#2
aipb20072007-09-20 22:00
你会排序算法吗?

你把排序里比较那部分,换成对这个数字最大公约数的比较,不就按这个排序完成了。

所以只需要保存那些数字,不需要保存最大公约数了。
#3
laogao32322007-09-21 08:21

一次只计算出一个最大公约数,不保存,不就没法比了。
谁会把数据赋给向量啊,谢谢

#4
aipb20072007-09-21 12:55
Think more then give conclusion.
1