急求C++高手,有编程高手帮帮忙,谢谢了。。
建立一个类MOVE,不进行排序,将数组中小于平均值的元素放到数组的左边,大于平均值的元素放到数组的右边。具体要求如下:
(1)私有数据成员
float array[20]:一维整型数组。
int n:数组中元素的个数。
(2)公有成员函数
MOVE(float b[],int m):构造函数,初始化成员数据。
void average():输入平均值,并将数组中的元素按要求重新放置。
void print():输出一维数组。
(3)在主程序中用数据{1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3}对该类进行测试 展开
2011-03-08
#include <iostream.h>
class MOVE
{
public:
// MOVE(float b[],int m); //构造函数,初始化成员数据。
// void average():输入平均值,并将数组中的元素按要求重新放置。
// void print():输出一维数组。
MOVE(float b[], int m)
{
for (int i=0; i<m; i++)
{
array[i] = b[i];
}
n = m;
}
void average()
{
cout << "请输入平均值:" << endl;
float avg;
cin >> avg;
// 进行"左右分" 操作
float nTmp[20] = { 0 };
int nSmallCount = 0;
int nBigCount = 0;
for (int i=0; i<n; i++)
{
if (array[i] <= avg)
{
nTmp[nSmallCount] = array[i];
nSmallCount++;
}
else
{
nBigCount++;
nTmp[n - nBigCount] = array[i];
}
}
for (i=0; i<n; i++)
{
array[i] = nTmp[i];
}
}
void print()
{
for (int i=0; i<n; i++)
{
cout << array[i] << ends ;
}
cout << endl;
}
private:
float array[20]; //一维整型数组。
int n; //数组中元素的个数。
};
void main()
{
float array[] = {1.3f,6.2f, 3, 9.1f, 4.8f, 7.4f, 5.6f, 9.2f, 2.3f};
// 构造对象
MOVE test(array, 9);
// 打印远数据:
test.print();
// 进行"小的在左边, 大的在右边" 的操作
test.average();
// 打印操作执行完后的结果:
test.print();
}
using namespace std;
class MOVE
{
public:
MOVE(float b[],int m);
void average();
void print();
private:
float array[20];
int n; //n<=20;
};
MOVE::MOVE(float b[],int m)
{
int i;
if(m>20){
cout<<"数组越界"<<endl;
return;
}
n=m;
for(i=0;i<n;i++)
{
array[i] = b[i];
}
}
void MOVE::average()
{
float aver;
cout<<"请输入平均值:";
cin>>aver;
//开始移动元素;
int i,j,k;
float temp;
for(i=0;i<n-1;i++)
{
if(array[i] > aver)
{
for(j=i+1;j<n;j++)
{
if(array[j] <= aver) //找到右边不大于aver的第一个元素
{
temp = array[j];
break;
}
}
if(j == n) //如果没有找到不大于aver的元素则结束移动
break;
//将找到的元素移到i的位置,i位置起的元素依次后移
for(k=j;k>i;k--)
array[k] = array[k-1];
array[i] = temp;
}
}
}
void MOVE::print()
{
int i;
for(i=0;i<n;i++)
{
cout<<array[i]<<" ";
}
cout<<endl;
}
void main()
{
float testArray[] = {1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3};
MOVE move(testArray, sizeof(testArray)/sizeof(testArray[0]));
move.average();
cout<<"移动后结果:"<<endl;
move.print();
}
测试结果:
请输入平均值:4.9
移动后结果:
1.3 3 4.8 2.3 6.2 9.1 7.4 5.6 9.2
Press any key to continue