#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

三元组的操作是数据结构的基本操作,可以为我们后面的数据结构打下基础。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐