急求C++高手,有编程高手帮帮忙,谢谢了。。

用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}对该类进行测试

#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();

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-03-07
#include<iostream>
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本回答被提问者采纳
第2个回答  2011-03-07
不排序是什么意思?那你可以将这一个一维数组加和后求平均值,然后依次和数组的元素比较,大于平均值的放到数组的尾部,小于平均值的放到数组的前面,依次放下去,直到放满。
相似回答