|
文章结束
2008-6-21 10:44:01 婷儿
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-6-21
第 2 楼 得分:0 各位高手,救命啊!!!
要求用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-6-21 10:45:28 婷儿
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-6-21
第 3 楼 得分: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=int(m)%10;
m/10;
}
for(i=0;i<2;i++)
{
d=a;
a=a[4-1-i];
a[4-1-i]=d;
}
for(i=0;i<4;i++)
cout<<a;
for(i=4;i<10;i++)
{
m=m-int(m);
a=int(m*10);
m=m*10;
}
for(i=4;i<10;i++)
cout<<a;
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;
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;
cout<<".";
for(i=4;i<10;i++)
cout<<a<<endl;
for(j=0;j<4;j++)
cout<<b[j];
cout<<".";
for(j=4;j<10;j++)
cout<<b[j]<<endl;
文章结束
2008-6-21 10:46:16 守鹤
来 自:山東臨沂
等 级:贵宾
威 望:12
帖 子:337
专家分:0
注 册:2008-6-20
第 4 楼 得分:0
你的程序好猛啊,
我把编译出现的错误全改正了,既然出现了不可思议的场景
不信你可以试试
文章结束
2008-6-21 14:29:09 守鹤
来 自:山東臨沂
等 级:贵宾
威 望:12
帖 子:337
专家分:0
注 册:2008-6-20
第 5 楼 得分:0
#include<iostream>
using namespace std;
int main()
{
double sm,sn;
cout<<"输入两个浮点数:"<<endl;
cin>>sm>>sn;
int a[10],b[10],c[10]={0,1,1,0,1,1,0,0,1,1};
int i=0,xchg; //中间处理数据的i和数据交换的xchg
double m,n; //保存两个浮点数
n=sn;m=sm;
int s=1000; //浮点数送数组时一次位的传送
long int t=1000000;
for( i=9;i>=0;i++)
{
a=m/s;
b=n/s;
m=int(m)%s;
n=int(n)%s;
s/=10;
if(s==0)
{s=1000000;m=m*t;n=n*t;}
}
for( i=9;i>=0;i++)
cout<<a;
cout<<endl<<"浮点数m的数组"<<endl;
for(i=9;i>=0;i++)
cout<<endl<<"浮点数N的数组"<<endl;
for(i=0;i<=9;i++)
if(c==1)
{
xchg=a;a=b;b=xchg;
}
cout<<"交换后的数据显示"<<endl;
for(i=9;i>=0;i++)
cout<<a;
cout<<endl<<"M的显示"<<endl;
for(i=9;i>=0;i++)
cout<<b;
cout<<endl<<"N的显示"<<endl;
return 0;
}
文章结束
2008-6-21 15:51:00 守鹤
来 自:山東臨沂
等 级:贵宾
威 望:12
帖 子:337
专家分:0
注 册:2008-6-20
第 6 楼 得分:0
#include<iostream>
using namespace std;
int main()
{
double sm,sn;
cout<<"输入两个浮点数:"<<endl;
cin>>sm>>sn;
int a[10],b[10],c[10]={0,1,1,0,1,1,0,0,1,1};
int i=0,xchg; //中间处理数据的i和数据交换的xchg
double m,n; //保存两个浮点数
n=sn;m=sm;
int s=1000; //浮点数送数组时一次位的传送
long int t=1000000;
for( i=9;i>=0;i++)
{
a=m/s;
b=n/s;
m=int(m)%s;
n=int(n)%s;
s/=10;
if(s==0)
{s=1000000;m=m*t;n=n*t;}
}
for( i=9;i>=0;i++)
cout<<a;
cout<<endl<<"浮点数m的数组"<<endl;
for(i=9;i>=0;i++)
cout<<endl<<"浮点数N的数组"<<endl;
for(i=0;i<=9;i++)
if(c==1)
{
xchg=a;a=b;b=xchg;
}
cout<<"交换后的数据显示"<<endl;
for(i=9;i>=0;i++)
cout<<a;
cout<<endl<<"M的显示"<<endl; |
|