编写一个简单的数字比较程序(在线等)

来源:百度知道 编辑:UC知道 时间:2024/06/05 14:25:11
这个程序实现的功能是;
用记事本输入一组数,每个都是3位数,然后开始比较.
比如;记事本里写的123,342,768,573,470,294,874,983,329,232.
第一次比较;第一组数'123'和第二组数'342'比较,就有2,3是重复的(不管顺序)那么就是2.
然后第2组数(342)再和第3组数(768)比较.又有一个数重复......
以次类推1-2,2-3,3-4,4-5......n-n+1比较形成的重复个数排成一行.行如;
20111121........
从上面的比较方法可以看出1-2,2-3,3-4,4-5......n-n+1都间隔了0个数比较,下面比较的方法是间隔一组数1-3,2-4,3-5,4-6.....n-n+2再输出一行数.行如;001201201.....
第三次比较间隔两组数...1-4,2-5,3-6.4-7.....再输出一行数.
第四次比较间隔三组数.......
如此循环把最后的结果输出到记事本里.
最终结果形如;
第一组;00012021212........
第二组;11102101210........
....
....
....
第n组;120120112012........
我可以选择输出组的数量.
比如说我想输出3组结果它就输出前3组结果出来.
如果你还有什么不懂的地方请加QQ;19268856(只要满足要求马上给分)
关于这个问题两个数的比较重复个数的算法
http://zhidao.baidu.com/question/6673324.html
希望对大家编出完整的程序有点帮助.

#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("in.txt");
ofstream fout("out.txt");
int suanfa(int a, int b)
{
int numa[10]={0},numb[10]={0};
int s=0;
while (a>0){
++numa[a%10];++numb[b%10];//统计数字
a/=10;b/=10;
};
for (int i=0;i<10;i++) if (numa[i]&&numb[i]) ++s;//如果都有则累加
return s;
}
int main()
{
int n,i,j,m=0,s,t;
fin>>n;
int a[n+1],b[n+1][n+1],l=0,k=0;
for(i=1;i<=n;i++)
{
fin>>a[i];
if(a[i]<10000){m++;}
}
if(m!=n){fout<<"兄弟,你还少"<<n-m<<"个数"<<endl;return 0;}
for(i=0;i<=n-2;i++)
{
s=1;
l++;
k=0;
while(s+i+1<=n)
{
t=suanfa(a[s],a[s+1+i]);
k++;
b[l][k]=t;
s++;
}
}
for(i=1;i<=n-1;i++)
{
for(j=1;j<=n-i;j++)
{
fout<<b[i][j];