标题:请高手帮帮忙
只看楼主
婷儿
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-6-21
 问题点数:0 回复次数:2 
请高手帮帮忙
要求用C++语言编程,在Visual C++环境下调试完成;
三、设计方法和基本原理
1.    课题功能描述
若某两个数字分别为:1357.8902和53.639742,则在交叉因子0110.110011的控制下,两个新的数字分别为1057.630242和353.8997,即交叉因子为“1”的那位进行交换,而为“0”的那位两个数字不进行交换。
现在要求做一个整数最多为4位,小数位最多为6位情况下,要求显示输入随机生成的两个数字以及一个交叉因子,在随机生成的交叉因子控制下实现两个数字的交叉,并将交叉结果输出。
2.    问题的解决方案:
将读入的两个小于10000的实型数据分别存储到两个整型数组中,数组中每个元素都是0~9的整数,对于上面给出的例子存储结果如下:
1    3    5    7    8    9    0    2    0    0
0    0    5    3    6    3    9    7    4    2
使用随机函数生成交叉因子,即如下形式
0    1    1    0    1    1    0    0    1    1
然后在交叉因子控制下完成数据交换。
最后将交换后的数组重新整和成为两个实数。
四、创新要求
在基本要求达到后,进行创新设计,对随机生成的20个数据,随机选择m对数据进行数据交叉。
搜索更多相关主题的帖子: 数字 交叉 随机 整数 
2008-06-21 08:55
婷儿
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-6-21
得分:0 
我写了一个程序,不知道对不对,希望指正一下
#include<iostream.h>
#include<stdlib.h>
void main()
{
double m,n;
cin>>m>>n;
int d,e,g,a[10],b[10],c[10];
for(int i=0;i<4;i++)
{
a[i]=int(m)%10;
m/10;
}
for(i=0;i<2;i++)
{
d=a[i];
a[i]=a[4-1-i];
a[4-1-i]=d;
}
for(i=0;i<4;i++)
cout<<a[i];
for(i=4;i<10;i++)
{
m=m-int(m);
a[i]=int(m*10);
m=m*10;
}
for(i=4;i<10;i++)
cout<<a[i];
cout<<endl;
for(int j=0;j<4;j++)
{
b[ij=int(n)%10;
n/10;
}
for(j=0;j<2;j++)
{
e=b[j];
b[j]=b[4-1-j];
b[4-1-j]=e;
}
for(j=0;j<4;i++)
cout<<a[i];
for(j=4;j<10;j++)
{
n=n-int(n);
b[j]=int(n*10);
n=n*10;
}
for(j=4;j<10;j++)
cout<<b[j];
cout<<endl;
for(int k=0;k<10;k++)
{
c[k]=rand()%2;
cout<<endl;
for(k=0;k<10;k++)
if(c[k]==1)
{
g=a[k];
a[k]=b[k];
b[k]=g;
}
for(i=0;i<4;i++)
cout<<a[i];
cout<<".";
for(i=4;i<10;i++)
cout<<a[i]<<endl;
for(j=0;j<4;j++)
cout<<b[j];
cout<<".";
for(j=4;j<10;j++)
cout<<b[j]<<endl;
2008-06-21 09:23
smartwind
Rank: 1
等 级:新手上路
威 望:1
帖 子:277
专家分:0
注 册:2006-11-13
得分:0 
// k为交换因子
void DoExchange(double m, double n, double k)
{
    int a, b;
    double i;
    for(i = 0.000001; i < 10000; i*=10)
    {
        if((int)(k/i)%10)    // 需要交换
        {
            a = (int)(m/i)%10;
            b = (int)(n/i)%10;

            m = m - a*i + b*i;
            n = n - b*i + a*i;
        }
        else if((int)(k/i)%10 != 0)
        {
            cout << "error input" << endl;
            return;
        }
    }
    // 此处打印即可,不过我忘了怎么设打印时的位数
}

2008-06-21 16:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-220339-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.704143 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved