C++编程题!求大神指教,在线等。

大小不一的一摞饼,a[i]表示第i层饼的大小。设计一个函数void sort(int a[],int n)对n个饼进行翻转,使得大饼在下小饼在上排放,要求每次只能选择上方的一堆饼,一起翻转,并用一个类实现封装。

#include <iostream>
using namespace std;

//i 1 2 3 4 5
//--------------------
//a[i] 0 2 4 3 1
// 要求从大到小排序
// 特殊的冒泡:每次翻转的目的是将“当前”最短的翻到上面
int arr[] = {0,2,4,3,1};//0表示最短的,4表示最长的
int len = 5;//有5块版
int pArr = len-1;//初始化指向数组的最后一个元素
int loc;
//求除了已经在最上面的当前最小数的位置loc
void locationOfMin()
{
int i,minNum = 10000;
for(i = 0;i<pArr;i++)
{
if (minNum>arr[i])
{
minNum = arr[i];
loc = i;
}
}
}
////翻转loc 和 pArr之间的数
void flip()
{
int n = pArr - loc,m,temp;
m = n/2;
for (int i =0;i<=m;i++)
{
temp = arr[loc+i];
arr[loc+i] = arr[pArr-i];
arr[pArr-i] = temp;
}

}

void sort()
{
//找到当前最小数的位置
locationOfMin();
//翻转loc 和 pArr之间的数
flip();
pArr--;//这个是从最后往前移动
}

int main()
{
int i;
for (i = 0;i<len-1;i++)
{
sort();
}
//cout
for (i = 0;i<len;i++)
{
cout<<arr[i]<<" ";
}
cout<<endl;
return 0;
}追问

请为一下大神怎么用类封装啊

追答

#include
using namespace std;

#define MAX 5

class Game
{

public:
void locationOfMin();//寻找当前最小数
void flip();//翻转
void sort();//排序
void print();//输出结果
Game();//构造函数,初始化
~Game();
private:
int arr[MAX];
int len;//数组长
int pArr;//指向数组最后,往前移动
int loc;//当前最小数位置
};

Game::Game()
{
//{0,2,4,3,1};
arr[0]=0;
arr[1]=2;
arr[2]=4;
arr[3]=3;
arr[4]=1;

len= MAX;
pArr=len -1;
}

void Game::locationOfMin()
{
int i,minNum = 10000;
for(i = 0;iarr[i])
{
minNum = arr[i];
loc = i;
}
}
}

void Game::flip()
{
int n = pArr - loc,m,temp;
m = n/2;
for (int i =0;i<=m;i++)
{
temp = arr[loc+i];
arr[loc+i] =

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-13
一堆-----》一对
相似回答