#include<stdio.h>
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status;
typedef int ElemType;
typedef ElemType *Triplet;
Status InitTriple(Triplet &T,ElemType v1,ElemType v2,ElemType v3) {
T=(ElemType *)malloc(3*sizeof(ElemType));
if(!T) {
exit(OVERFLOW);
}
T[0]=v1;
T[1]=v2;
T[2]=v3;
return OK;
}
Status Get(Triplet T,int i,ElemType &e) {
if(i<1 || i>3) {
return ERROR;
}
e=T[i-1];
return OK;
}
Status Put(Triplet &T,int i,ElemType e) {
if(i<1 || i>3) {
return ERROR;
}
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 Max(Triplet T,ElemType &e) {
ElemType temp;
temp=T[0];
if(T[1]>temp) {
temp=T[1];
}
if(T[2]>temp) {
temp=T[2];
}
e=temp;
return OK;
}
Status Min(Triplet T,ElemType &e) {
ElemType temp;
temp=T[0];
if(T[1]<temp) {
temp=T[1];
}
if(T[2]<temp) {
temp=T[2];
}
e=temp;
return OK;
}
Status DestroyTriplet(Triplet &T){
free(T);
T=NULL;
return OK;
}
int main() {
Triplet T;
ElemType e1,v1,v2,v3,e2;
int i;
scanf("%d%d%d%d%d\n",&v1,&v2,&v3,&i,&e2);
InitTriple(T,v1,v2,v3);
printf("三元组3个元素:%d %d %d。\n",T[0],T[1],T[2]);
Get(T,i,e1);
if(Put(T,i,e2)) {
printf("将第%d个元素%d修改为%d后,",i,e1,e2);
printf("三元组3个元素:%d %d %d。\n",T[0],T[1],T[2]);
} else {
printf("无第%d个元素,获取或修改元素失败!\n",i);
}
if(IsAscending(T)) {
printf("三元组元素升序排列!\n");
} else if(IsDescending(T)) {
printf("三元组元素降序排列!\n");
} else {
printf("三元组元素无序排列!\n");
}
Max(T,e1);
printf("三元组中最大元素:%d,",e1);
Min(T,e2);
printf("最小元素:%d。\n",e2);
DestroyTriplet(T);
printf("三元组被销毁,结束程序!");
return 0;
}