高分求高手解决一道c++编程题,这题对我来说真的有点难
题目:设计可生成均匀分布随机数据矩阵的C++类及相应的测试主程序。所生成的矩阵在该类对象退出作用域时可自动存入磁盘文件,该磁盘文件名及其存储路径有默认值,也可通过类成员函...
题目:设计可生成均匀分布随机数据矩阵的C++类及相应的测试主程序。所生成的矩阵在该类对象退出作用域时可自动存入磁盘文件,该磁盘文件名及其存储路径有默认值,也可通过类成员函数设置更改;矩阵的行、列数有默认值,也可通过类成员函数设置更改;每一列数据为同一分布,不同列数据为不同分布,均匀分布参数a、b有默认值,也可通过类成员函数设置更改。
要求:提交类声明头文件、类实现文件和测试程序文件3个源代码文件
要是真正写出来了可以把文件发到我的邮箱xin350625@126.com
要是答案满意我再追加100分,7月27号解决这个问题的追加200分,高手进来看看
难道没有高手进来试试~~? 展开
要求:提交类声明头文件、类实现文件和测试程序文件3个源代码文件
要是真正写出来了可以把文件发到我的邮箱xin350625@126.com
要是答案满意我再追加100分,7月27号解决这个问题的追加200分,高手进来看看
难道没有高手进来试试~~? 展开
6个回答
展开全部
你看看这个程序行不行
随机数类:random.h
#include <math.h>
#include <time.h>
#define IM1 2147483563
#define IM2 2147483399
#define AM (1.0/IM1)
#define IMM1 (IM1-1)
#define IA1 40014
#define IA2 40692
#define IQ1 53668
#define IQ2 52774
#define IR1 12211
#define IR2 3791
#define NTAB 32
#define NDIV (1+IMM1/NTAB)
#define EPS 1.2e-7
#define RNMX (1.0-EPS)
unsigned int seed=0; //seed 为种子,要设为全局变量
void mysrand(long int i) //初始化种子
{
seed = -i;
}
long a[1];
class myrandom
{
public:
double ran1(long *idum)
{
int j;
long k;
static long idum2=123456789;
static long iy=0;
static long iv[NTAB];
float temp;
if (*idum <= 0)
{
if (-(*idum) < 1) *idum=1;
else *idum = -(*idum);
idum2=(*idum);
for (j=NTAB+7;j>=0;j--)
{
k=(*idum)/IQ1;
*idum=IA1*(*idum-k*IQ1)-k*IR1;
if (*idum < 0) *idum += IM1;
if (j < NTAB) iv[j] = *idum;
}
iy=iv[0];
}
k=(*idum)/IQ1;
*idum=IA1*(*idum-k*IQ1)-k*IR1;
if (*idum < 0) *idum += IM1;
k=idum2/IQ2;
idum2=IA2*(idum2-k*IQ2)-k*IR2;
if (idum2 < 0) idum2 += IM2;
j=iy/NDIV;
iy=iv[j]-idum2;
iv[j] = *idum;
if (iy < 1) iy += IMM1;
if ((temp=AM*iy) > RNMX) return RNMX;
else return temp;
}
};
矩阵类:matrix.h
#include <stdio.h>
#include <iostream.h>
#include <vector>
#include "random.h"
using namespace std;
class matrix
{
public:
outmatrix()
{
int c=2,d=2,m=0,n=1;//默认的矩阵是两行两列且均是(0,1)之间的均匀分布
mysrand(time(0));//初始化
a[0]=seed;//初始化,注意:我用的不是C++自带的随机数函数,而是自编函数,这两行是对随机数的初始化,位置和数都不能变,变量"a"只能供随机数使用,你不能用!!!
myrandom ran;
int panduan=0;
cout<<"如果使用默认行列数请按0,否则请按1"<<endl;
cin>>panduan;
if(panduan==1)
{
cout<<"请输入数组行列数"<<endl;
cin>>c>>d;
}
vector<vector<double> > tdmatrix(d, vector<double>(c)); //定义一个二维动态数组
panduan=0;
for(int i=0;i<d;i++)//输入每一列均匀分布的范围
{
cout<<"均匀分布使用默认值请按0,否则请按1"<<endl;
cin>>panduan;
if(panduan==1)
{
cout<<"请输入第"<<i+1<<"列平均分布的左右边界"<<endl;
cin>>m>>n;
}
for(int j=0;j<c;j++)
{
tdmatrix[i][j]=m+ran.ran1(a)*(n-m);
}
panduan=0;
}
// cout<<"im here"<<endl;
panduan=0;
//
cout<<"如果保存在默认文件夹中请按0,否则请按1"<<endl;
cin>>panduan;
if(panduan==0)
{
char str[]="d:\\matrix.txt";
freopen(str, "w+",stdout);
}
else if(panduan==1)
{
char str[100];
cout<<"请输入保存路径和文件名,如:d:\\\\"<<"matrix.txt"<<endl;
cin>>str;
freopen(str, "w+",stdout);
}
vector<vector<double> > tdmatrix1(c, vector<double>(d));
for(i=0;i<c;i++)
{
for(int j=0;j<d;j++)
{
tdmatrix1[i][j]=tdmatrix[j][i];
cout<<tdmatrix1[i][j]<<" ";
}
cout<<endl;
}
}
};
测试程序:
#include "matrix.h"
void main()
{
matrix ma;
ma.outmatrix();
}
相关程序已发入你的邮箱,请查收
我的邮箱:hu_hu605@163.com
随机数类:random.h
#include <math.h>
#include <time.h>
#define IM1 2147483563
#define IM2 2147483399
#define AM (1.0/IM1)
#define IMM1 (IM1-1)
#define IA1 40014
#define IA2 40692
#define IQ1 53668
#define IQ2 52774
#define IR1 12211
#define IR2 3791
#define NTAB 32
#define NDIV (1+IMM1/NTAB)
#define EPS 1.2e-7
#define RNMX (1.0-EPS)
unsigned int seed=0; //seed 为种子,要设为全局变量
void mysrand(long int i) //初始化种子
{
seed = -i;
}
long a[1];
class myrandom
{
public:
double ran1(long *idum)
{
int j;
long k;
static long idum2=123456789;
static long iy=0;
static long iv[NTAB];
float temp;
if (*idum <= 0)
{
if (-(*idum) < 1) *idum=1;
else *idum = -(*idum);
idum2=(*idum);
for (j=NTAB+7;j>=0;j--)
{
k=(*idum)/IQ1;
*idum=IA1*(*idum-k*IQ1)-k*IR1;
if (*idum < 0) *idum += IM1;
if (j < NTAB) iv[j] = *idum;
}
iy=iv[0];
}
k=(*idum)/IQ1;
*idum=IA1*(*idum-k*IQ1)-k*IR1;
if (*idum < 0) *idum += IM1;
k=idum2/IQ2;
idum2=IA2*(idum2-k*IQ2)-k*IR2;
if (idum2 < 0) idum2 += IM2;
j=iy/NDIV;
iy=iv[j]-idum2;
iv[j] = *idum;
if (iy < 1) iy += IMM1;
if ((temp=AM*iy) > RNMX) return RNMX;
else return temp;
}
};
矩阵类:matrix.h
#include <stdio.h>
#include <iostream.h>
#include <vector>
#include "random.h"
using namespace std;
class matrix
{
public:
outmatrix()
{
int c=2,d=2,m=0,n=1;//默认的矩阵是两行两列且均是(0,1)之间的均匀分布
mysrand(time(0));//初始化
a[0]=seed;//初始化,注意:我用的不是C++自带的随机数函数,而是自编函数,这两行是对随机数的初始化,位置和数都不能变,变量"a"只能供随机数使用,你不能用!!!
myrandom ran;
int panduan=0;
cout<<"如果使用默认行列数请按0,否则请按1"<<endl;
cin>>panduan;
if(panduan==1)
{
cout<<"请输入数组行列数"<<endl;
cin>>c>>d;
}
vector<vector<double> > tdmatrix(d, vector<double>(c)); //定义一个二维动态数组
panduan=0;
for(int i=0;i<d;i++)//输入每一列均匀分布的范围
{
cout<<"均匀分布使用默认值请按0,否则请按1"<<endl;
cin>>panduan;
if(panduan==1)
{
cout<<"请输入第"<<i+1<<"列平均分布的左右边界"<<endl;
cin>>m>>n;
}
for(int j=0;j<c;j++)
{
tdmatrix[i][j]=m+ran.ran1(a)*(n-m);
}
panduan=0;
}
// cout<<"im here"<<endl;
panduan=0;
//
cout<<"如果保存在默认文件夹中请按0,否则请按1"<<endl;
cin>>panduan;
if(panduan==0)
{
char str[]="d:\\matrix.txt";
freopen(str, "w+",stdout);
}
else if(panduan==1)
{
char str[100];
cout<<"请输入保存路径和文件名,如:d:\\\\"<<"matrix.txt"<<endl;
cin>>str;
freopen(str, "w+",stdout);
}
vector<vector<double> > tdmatrix1(c, vector<double>(d));
for(i=0;i<c;i++)
{
for(int j=0;j<d;j++)
{
tdmatrix1[i][j]=tdmatrix[j][i];
cout<<tdmatrix1[i][j]<<" ";
}
cout<<endl;
}
}
};
测试程序:
#include "matrix.h"
void main()
{
matrix ma;
ma.outmatrix();
}
相关程序已发入你的邮箱,请查收
我的邮箱:hu_hu605@163.com
2008-07-27
展开全部
class RandomMatrix
{
public:
RandomMatrix()
{
m_sPath = "1.txt"
m_nRow = 3;
m_nCol = 3;
}
RandomMatrix(String s,int r,int c):m_sPath(s),m_nRow(r),m_nCol(c)
{
}
//
//输入列数,得到随机数
virtual int getColValue(int col) = 0;
void genMatrix()
{
//设置大小
//产生数
//函数
}
void saveMatrix()
{
//写入路径的文件
}
private:
String m_sPath;
vector<int> m_vectMatrix;
int m_nRow;
int m_nCol;
};
{
public:
RandomMatrix()
{
m_sPath = "1.txt"
m_nRow = 3;
m_nCol = 3;
}
RandomMatrix(String s,int r,int c):m_sPath(s),m_nRow(r),m_nCol(c)
{
}
//
//输入列数,得到随机数
virtual int getColValue(int col) = 0;
void genMatrix()
{
//设置大小
//产生数
//函数
}
void saveMatrix()
{
//写入路径的文件
}
private:
String m_sPath;
vector<int> m_vectMatrix;
int m_nRow;
int m_nCol;
};
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
同学呢很专业,太专业了在百度这个鱼龙混杂得地方找不到真正满意得答案...我的经验告诉我这些问题在论坛上可以得到帮助,但是现成得代码没有人会去写得...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我们班同学有弄这个的,我是一点不懂
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我知道一些,而且有现成的代码, 但是只有1部分的 代码 有些我也不知道怎么写
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询