我自定义的类// huanfang.cpp: implementation of the huanfang class.
//
//////////////////////////////////////////////////////////////////////#include "stdafx.h"
#include "Pdz.h"
#include "huanfang.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#define MAX_INDEX   100//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////huanfang::huanfang()
{}huanfang::~huanfang()
{}void huanfang::swap(int *a, int *b)
{
int t;
    t=*a;
    *a=*b;
    *b=t;
}void huanfang::QuickSort(int a[], int l, int r)
{
int i=l; /*从左至右的游标*/
    int j=r+1; /*从右到左的游标*/
    int pivot=a[l];
    if (l >= r) return;
     /*把左侧>= pivot的元素与右侧<= pivot 的元素进行交换*/
    while (1)
        {
            do
            {/*在左侧寻找>= pivot 的元素*/
                i = i + 1;
            } while (a[i] < pivot);
            do
            {/*在右侧寻找<= pivot 的元素*/
                j = j - 1;
            } while (a[j] > pivot);
            if (i >= j) break; /*未发现交换对象*/
            swap(&a[i],&a[j]);
        }    /*设置p i v o t*/
    a[l] = a[j];
    a[j] = pivot;
    QuickSort(a, l, j-1); /*对左段排序*/
    QuickSort(a, j+1, r); /*对右段排序*/
}void huanfang::Huanf(int Array[][MAX_INDEX], int n)
{
int i,j;
    int a,b,m;
    int tempArray1[MAX_INDEX];
    int tempArray2[MAX_INDEX];
    a=n/2;
    b=a+1;
    m=n%4;
    switch(m)
    {
    case 0:
    case 2:
        /*穿心对调*/
        for(i=0;i<n;i++)
        for(j=0;j<n/2;j++)
        {
            if(i<n/2)
            {
                if(i%2==1&&Array[i][j]%2==0)/*偶行换偶*/
                {
                    swap(&Array[i][j],&Array[n-1-i][n-1-j]);
                }
                else if(i%2==0&&Array[i][j]%2==1)/*奇行换奇*/
                {
                    swap(&Array[i][j],&Array[n-1-i][n-1-j]);
                }
            }
            else
            {
                if(i%2==1&&Array[i][j]%2==1)/*偶行换奇*/
                {
                    swap(&Array[i][j],&Array[n-1-i][n-1-j]);
                }
                else if(i%2==0&&Array[i][j]%2==0)/*奇行换偶*/
                {
                    swap(&Array[i][j],&Array[n-1-i][n-1-j]);
                }  
            }        }
        /*End穿心对调*/
        if(m==2)
        {
            for(i=0;i<n/2;i++)
            {
                if((i!=0)&&(i!=a-1)&&(i!=b-1)&&(i!=n-1))
                {
                    swap(&Array[i][a-1],&Array[n-1-i][a-1]);
                    swap(&Array[b-1][i],&Array[b-1][n-1-i]);
                }
            }
            swap(&Array[0][a-1],&Array[0][b-1]);
            swap(&Array[a-1][0],&Array[b-1][0]);
            swap(&Array[2][0],&Array[2][n-1]);
            swap(&Array[0][2],&Array[n-1][2]);  
        }
        break;
    case 1:
    case 3:
        /*穿心对调*/
        for(i=0;i<n;i++)
            for(j=0;j<n/2;j++)
            {
                if(i<n/2)
                {
                    if(i%2==1&&Array[i][j]%2==0) /*偶行换偶*/
                    {
                        swap(&Array[i][j],&Array[n-1-i][n-1-j]);
                    }
                    else if(i%2==0&&Array[i][j]%2==0)/*奇行换奇*/
                    {
                        swap(&Array[i][j],&Array[n-1-i][n-1-j]);
                    }
                }
                else if(i>n/2)
                {
                    if(i%2==1&&Array[i][j]%2==0)/*偶行换偶*/
                    {
                        swap(&Array[i][j],&Array[n-1-i][n-1-j]);
                    }
                    else if(i%2==0&&Array[i][j]%2==0)/*奇行换奇*/
                    {
                        swap(&Array[i][j],&Array[n-1-i][n-1-j]);
                    }
                }
            }
        /*End穿心对调*/
        /*重排米字*/
        for(i=0;i<n;i++)
        {
            tempArray1[i]=Array[i][i];
            tempArray2[i]=Array[a][i];
        }        QuickSort(tempArray1,0,n-1);
        QuickSort(tempArray2,0,n-1);
        for(i=0;i<n;i++)
        {
            Array[i][i]=tempArray2[i];
            Array[a][i]=tempArray1[i];
        }
        for(i=0;i<n;i++)
        {
            tempArray1[i]=Array[i][n-1-i];
            tempArray2[i]=Array[i][a];
        }
        QuickSort(tempArray1,0,n-1);
        QuickSort(tempArray2,0,n-1);
        for(i=0;i<n;i++)
        {
            Array[i][n-1-i]=tempArray2[i];
            Array[i][a]=tempArray1[i];
        }
        /*End重排米字*/        if(m==3)
        {
             for(i=0;i<n/2;i++)
            {
                if((i!=a-1)&&(i!=b-1)&&(i!=a+1))
                {
                    swap(&Array[i][a-1],&Array[n-1-i][a-1]);
                    swap(&Array[a-1][i],&Array[a-1][n-1-i]);
                }
            }
            swap(&Array[a-1][a-1],&Array[a+1][a+1]);
            swap(&Array[a-1][b-1],&Array[a+1][b-1]);   
        }
        break;
    default:
        break;
    }
    return;
}void huanfang::main()
{
int Ne[MAX_INDEX][MAX_INDEX];
int i,j,n,m_nNumdigit;
while(1)
{
n=m_nNumdigit;
        if(n==0)
            break;
   
        /*数组赋初值*/
        for(i=0;i<n;i++)
            for(j=0;j<n;j++)
                Ne[i][j]=i*n+(j+1);        Huanf(Ne,n);        for(i=0;i<n;i++)
        for(j=0;j<n;j++)
        {
            printf("%-4d",Ne[i][j]);
            if(j==n-1)
                printf("\n\n");
        }
        printf("\n\n");
        getch();
   }
}
[color=#FF0000]在按钮的处理函数里面应该怎么调用啊?????[/color]

解决方案 »

  1.   

    你能帮我看看我自己定义的这个类有没有问题?我怕是这个问题,因为我通过定义该类对象后,出现的错是function does not take 0 parameters。
      

  2.   


    #include "youClass.h"void CXXXXClass::OnBnClickXXXButton()
    {
      youClass myClass;
      myClass.Function();
    }
      

  3.   

    huanfang有用的就是两个排序!
    定义该类对象后,出现的错是function does not take 0 parameters
    如果你调用Huanf,QuickSort你需要传入相应的参数,如果你没传的话就会出现上面的提示
      

  4.   

    调用Huanf,QuickSort,swap需要传入相应的参数,应该怎么传入呢?我是设置了一个编辑框来输入数字,我定义了编辑框的一个变量为m_nNumber,需要怎么样把这个数字传进去呢?
      

  5.   

    在按钮函数里创建那个类,用类名.函数名(参数);来调用
    如果按钮函数在类中,按钮函数申明时加上static前缀,调用类中函数用this->函数名(参数);