#include "Triplet.h"
using namespace std;
#include<iomanip>//c++保留小数头文件
int main()
{
int i;
DataType v1,v2,v3,e;
float f;
Triplet T;
menu();
int select;
do
{
cout<<"\n>>>请选择你需要的操作:";
cin>>select;
switch(select)
{
case 1:
cout<<"请输入三元组的三个值:"<<endl;
cin>>v1>>v2>>v3;
if(InitTriplet(T,v1,v2,v3))
{
cout<<"创建成功!"<<endl;
}
else
{
cout<<"创建失败!!!"<<endl;
}
break;
case 2:
if(DestroyTriplet(T))
{
cout<<"销毁成功!"<<endl;
}
else
{
cout<<"销毁失败!"<<endl;
}
break;
case 3:
cout<<"请输入你想查找的位置:";
cin>>i;
Get(T,i,e);
cout<<"该位置的元素是:"<<e<<endl;
break;
case 4:
cout<<"请输入你想修改的位置:"<<endl;
cin>>i;
cout<<"请输入您想要修改为什么:"<<endl;
cin>>e;
Put(T,i,e);
cout<<"该位置的元素变为"<<e<<endl;
break;
case 5:
if(IsAscending(T))cout<<"升序!"<<endl;
else cout<<"不升序!"<<endl;
break;
case 6:
if(IsDescending(T))cout<<"降序!"<<endl;
else cout<<"不降序!"<<endl;
break;
case 7:
Max(T,e);
cout<<"三元组的最大值是:"<<e<<endl;
break;
case 8:
Min(T,e);
cout<<"三元组的最小值是:"<<e<<endl;
break;
case 9:
Average(T,f);
cout.setf(ios::fixed);//保证输出是两位小数,头文件是 #include<iomanip>
cout<<"三元组的平均值是:"<<fixed<<setprecision(2)<<f<<endl;
break;
case 0:
exit(1);
default:
cout<<"输入错误!"<<endl;
break;
}
}
while(select);
return 0;
}
#include "Triplet.h"
using namespace std;
status InitTriplet(Triplet &T,DataType v1,DataType v2,DataType v3){
T = (DataType*)malloc(3*sizeof(DataType));
if(!T)exit(OVERFLOW);
T[0]=v1;T[1]=v2;T[2]=v3;
return OK;
}
//销毁
status DestroyTriplet(Triplet &T){
free(T);
T=NULL;
return OK;
}
//得到第i个数(1<=i<=3)
status Get(Triplet &T,int i,DataType &e){
if(i<1||i>3)return ERROR;
e = T[i-1];
return OK;
}
//修改第i个数为e
status Put(Triplet &T,int i,DataType 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,DataType &e){
if(T[0]>T[1]){
if(T[0]>T[2])e=T[0];
else e=T[2];
}else{
if(T[1]>T[2])e=T[1];
else e=T[2];
}
return OK;
}
//最小值
status Min(Triplet T,DataType &e){
if(T[0]<T[1]){
if(T[0]<T[2])e=T[0];
else e=T[2];
}else{
if(T[1]<T[2])e=T[1];
else e=T[2];
}
return OK;
}
//求平均值
status Average(Triplet T,float &f){
f=(T[0]+T[1]+T[2])*1.0/3;
}
//菜单
void menu()
{
cout<<"\t*******************请选择的操作******************************\n"
"\t* *\n"
"\t* 1.建立一个三元组 *\n"
"\t* 2.销毁一个三元组 *\n"
"\t* 3:取三元组第i个元素 *\n"
"\t* 4:置换第i个元素 *\n"
"\t* 5:查看三元组是否升序 *\n"
"\t* 6:查看三元组是否降序 *\n"
"\t* 7:查找三元组的最大值 *\n"
"\t* 8:查找三元组的最小值 *\n"
"\t* 9.取三元组的平均值 *\n"
"\t* 0:结束! *\n"
"\t* *\n"
"\t*************************************************************\n"
<<endl;
}
#ifndef TRIIPLET_H_INCLUDED
#define TRIIPLET_H_INCLUDED
#include<bits/stdc++.h>
using namespace std;
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
//#define OVERFLOW -2
typedef int status;
typedef float DataType;//可更该为int或float;
typedef DataType* Triplet;
//初始化
status InitTriplet(Triplet &T,DataType v1,DataType v2,DataType v3);
//销毁
status DestroyTriplet(Triplet &T);
//得到第i个数(1<=i<=3)
status Get(Triplet &T,int i,DataType &e);
//修改第i个数为e
status Put(Triplet &T,int i,DataType e);
//是否升序
status IsAscending(Triplet T);
//是否降序
status IsDescending(Triplet T);
//最大值
status Max(Triplet T,DataType &e);
//最小值
status Min(Triplet T,DataType &e);
//求平均值
status Average(Triplet T,float &f);
//菜单
void menu();
#endif // TRIIPLET_H_INCLUDED
三元组的操作是数据结构的基本操作,可以为我们后面的数据结构打下基础。