プログラム設計実験-トリプルの実現

プログラム設計実験-トリプルの実現

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h> 
typedef int ElemType;
typedef ElemType *Triplet;
 //定义三元组 
int Initriplet(Triplet *T,ElemType v1, ElemType v2,ElemType v3)
{
 *T = (ElemType *)malloc(3 * sizeof(ElemType));
 if(!*T)
  exit(0);
  (*T)[0] = v1;
  (*T)[1] = v2;
  (*T)[2] = v3;
  return 1;
}
//销毁三元组 
int DestoryTriplet(Triplet *T)
{
 free(*T);
 *T = NULL;
 return 1;
 } 
 //替换三元组 
int Put(Triplet *T,int i,ElemType e)
{
 if(i<1||i>3)
 return 0;
 (*T)[i-1] = e;
 return 1;
 } 
//找出最大值 
int Max(Triplet T,ElemType *e)
{
 if(T[0]>=T[1]){
  *e = T[0];
 }else{
  *e = T[1];
 }
 if(*e>=T[2]){
  *e=*e;
 }else{
  *e = T[2];
 }
 return 1;
  }   
  
//找出最小值 
int Min(Triplet T,ElemType *e)
{
 if(T[0]<=T[1]){
  *e = T[0];
 }else{
  *e = T[1];
 }
 if(*e<=T[2]){
  *e = *e;
 }else{
  *e = T[2];
 }
 return 1;
  }    
//返回第i个数据的地址  
int Get(Triplet T,int i,ElemType *e)
{
 if(i<1||i>3)
 return 0;
 *e = T[i-1];
 return 1;
}
//显示三元组 
int Printf(Triplet T)
{
    printf("三元组的三个值分别为:%d  %d  %d\n",T[0],T[1],T[2]);
    return 1; 
    } 
int main(int argc, char *argv[]) {
 Triplet T;
 ElemType m;
 int i,a,b,v1,v2,v3; 
 printf("     ############--目录--############     \n");
    printf("     |                                 |    \n");
 printf("     |      1. 初始化三元组            |\n");
 printf("     |      2. 显示三元组的值          |\n"); 
 printf("     |      3. 取第i个位置的地值       |\n");
 printf("     |      4. 替换第i个地址的值       |\n");
 printf("     |      5. 找到最大值              |\n");
 printf("     |      6. 找到最小值              |\n");
 printf("     |      7. 销毁三元组              |\n");
 printf("     |      8. 退出程序                |\n");
 printf("     |                                 |\n");
 printf("     ############--------############     \n");
 printf("请输入您选择的功能序号:\n"); 
 while(scanf("%d",&a)!=EOF ){                           
        switch(a)
     {
             case 1:{
                  printf("初始化三元组,请输入三元组的三个值!\n");
                  scanf("%d%d%d",&v1,&v2,&v3);
                  i =  Initriplet(&T,v1,v2,v3);
                  if(i){
                           printf("调用初始化三元组成功\n"); 
                        }else{
                              printf("调用初始化三元组成功\n");
                              }
                  };break;
             case 2:{
                  Printf(T);
                  };break;
             case 3:{
                  printf("请输入取第i个位置的值\n");
                  scanf("%d",&a);
                  i = Get(T, a, &m);               
                      printf("T的第%d个位置的值为:%d\n",a,m);                  
                  };break;
             case 4:{
                  printf("请输入您要替换的三元组位置");
                   scanf("%d",&a);
                   if(a>=1&&a<=3){ 
                   printf("请输入您要替换的三元组值");
                   scanf("%d",&b);
                  i = Put(&T, a, b);
               if(1==i)
                printf("将第%d个值改为%d后,三元组的值为:%d %d %d\n",a,b,T[0],T[1],T[2]);
               else
               printf("########## 替换失败! ##########\n");
                  }
                  else{
                       printf("########## 失败! 请输入正确的位置##########\n");
                       }
                  } ;break;
             case 5:{
                  i = Max(T,&m);
               if(i==1)
                printf("三元组中的最大值为:%d\n",m);
                  };break;
            case 6:{
                 i = Min(T,&m);
              if(i==1)
                  printf("三元组中的最小值为: %d\n",m);i = Min(T,&m);
                 };break;
            case 7:{
                  DestoryTriplet(&T);
               printf("销毁后T==%u(NULL)\n",T); 
                 } ;break;
            case 8:{
                 return 0;
                 }
        }
        printf("\n");
        printf("请输入您选择的功能序号:\n");
 }
     system ("PAUSE");
 return 0;
}

おすすめ

転載: blog.csdn.net/weixin_44192389/article/details/88973731