#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
typedef int Status;
typedef float ElemType;
typedef ElemType* Triplet;
Status InitTriplet(Triplet T,ElemType v1,ElemType v2,ElemType v3)
{
(T) = (ElemType)malloc(3sizeof(ElemType));
(*T[0])=v1;
(*T[1])=v2;
(*T[2])=v3;
return OK;
}
Status GetElem(Triplet T,int i,ElemType *e)
{
if(i<1||i>3)
return ERROR;
else
*e=T[i-1];
return OK;
}
Status PutElem(Triplet *T,Status i,ElemType &e)
{
if(i<1||i>3)
return ERROR;
else
*T[i-1]=e;
return OK;
}
Status isAscending(Triplet T)
{
return (T[0]<=T[1]&&(T[1]<=T[2]));
}
Status isDescending(Triplet T)
{
return (T[0]>=T[1]&&(T[1]>=T[2]));
}
Status getMax(Triplet T,ElemType *e)
{
*e=(T[0]>=T[1])?((T[0]>=T[2])?T[0]:T[2]):((T[1]>=T[2])?T[1]:T[2]);
return OK;
}
Status getMin(Triplet T,ElemType *e)
{
*e=(T[0]<=T[1])?((T[0]<=T[2])?T[0]:T[2])😦(T[1]<=T[2])?T[1]:T[2]);
return OK;
}
Status Print(Triplet T)
{
printf(“三元组为:\n”);
printf("%f %f %f",T[0],T[1],T[2]);
printf("\n");
}
Status DestroyTriplet(Triplet *T)
{
free(*T);
*T=NULL;
return OK;
}
Status Show(Triplet *T)
{
int i;
for(i = 0; i < 3; i++)
{
printf("%d", *T[i]);
}
putchar(’\n’);
return OK;
}
int main()
{
ElemType v1,v2,v3;
float e,*p=&e;
Status i,flag;
Triplet T,*t=&T;
printf("\n请输入三元组v1,v2,v3的值:\n");
scanf("%f %f %f",&v1,&v2,&v3);
printf("输出的三元素组为:\n");
InitTriplet(t,v1,v2,v3);
Print(T);
if(isAscending(T))
printf("该三元组元素为升序\n");
if(isDescending(T))
printf("该三元组元素为降序\n");
printf("%f\n",getMax(T,p));
printf("\n最大值为:%f\n",e);
getMin(T,p);
printf("\n最小值为:%f\n",e);
printf("\n请输入三元组所在位序:");
scanf("%f",&i);
if(i>=1&&i<=3)
{
GetElem(T,i,p);
printf("\n三元组中第%d个元素是:%d\n",i,*p);
}
printf("\n请输入要置换的三元组元素的位序i:");
scanf("%d",&i);
if(i>=1&&i<=3)
{
printf("\n要置换的新元素为:");
scanf("%d",&e);
PutElem(t,i,e);
printf("\n置换后的新三元组为:\n");
Print(T);
}
return OK;
}