c多范型

2009年3月11日星期三

 


#include <stdio.h>
#include <conio.h>
#include <string.h>
int compare_int(int *array,int n)
{
    int i,j,temp;
    for(i=0;i <n-1;i++)
    for(j=i+1;j <n;j++)
    {
        if(array[i] > array[j])
      {temp=array[i];array[i]=array[j];array[j]=temp;}
    } 
}
int compare_char(char *array,int n)
{
  int i,j;
  char temp;
    for(i=0;i <n-1;i++)
    for(j=i+1;j <n;j++)
    {
        if(array[i] > array[j])
      {temp=array[i];array[i]=array[j];array[j]=temp;}
    } 
}
int compare_double(double *array,int n)
{
  int i,j;
  double temp;
    for(i=0;i <n-1;i++)
    for(j=i+1;j <n;j++)
    {
        if(array[i] > array[j])
      {temp=array[i];array[i]=array[j];array[j]=temp;}
    }
}
int (*compare_oper[9])(void *array,int n)={NULL,compare_char,NULL,NULL,compare_int,NULL,NULL,NULL,compare_double};
void sort(void *str,int const n,int const len,int (*compare_oper[])(void *array,int n))
{
  compare_oper[len](str,n);   
}
void main()
{
    int i;
  int a[]={1,9,2,5,3}; #include <stdio.h>
#include <conio.h>
#include <string.h>
int compare_int(int *array,int n)
{
    int i,j,temp;
    for(i=0;i <n-1;i++)
    for(j=i+1;j <n;j++)
    {
        if(array[i] > array[j])
      {temp=array[i];array[i]=array[j];array[j]=temp;}
    } 
}
int compare_char(char *array,int n)
{
  int i,j;
  char temp;
    for(i=0;i <n-1;i++)
    for(j=i+1;j <n;j++)
    {
        if(array[i] > array[j])
      {temp=array[i];array[i]=array[j];array[j]=temp;}
    } 
}
int compare_double(double *array,int n)
{
  int i,j;
  double temp;
    for(i=0;i <n-1;i++)
    for(j=i+1;j <n;j++)
    {
        if(array[i] > array[j])
      {temp=array[i];array[i]=array[j];array[j]=temp;}
    }
}
int (*compare_oper[9])(void *array,int n)={NULL,compare_char,NULL,NULL,compare_int,NULL,NULL,NULL,compare_double};
void sort(void *str,int const n,int const len,int (*compare_oper[])(void *array,int n))
{
  compare_oper[len](str,n);   
}
void main()
{
    int i;
  int a[]={1,9,2,5,3};
  char *b="china";
  double c[]={2.5,1.1,4.99,1.5,1};
  sort(a,sizeof(a)/sizeof(int),sizeof(int),compare_oper);
  sort(b,strlen(b),sizeof(char),compare_oper);
  sort(c,sizeof(c)/sizeof(double),sizeof(double),compare_oper);
  for(i=0;i <5;i++)
    {printf("%d\n",a[i]);printf("%c\n",b[i]);printf("%ld\n",c[i]);}
  getch();
}
  char b[]="china";
  double c[]={2.5,1.1,4.99,1.5,1};
  sort(a,sizeof(a)/sizeof(int),sizeof(int),compare_oper);
  sort(b,strlen(b),sizeof(char),compare_oper);
  sort(c,sizeof(c)/sizeof(double),sizeof(double),compare_oper);
  for(i=0;i <5;i++)
    {printf("%d\n",a[i]);printf("%c\n",b[i]);printf("%ld\n",c[i]);}
  getch();
}

0 评论: