设计抽象数据类型三元组并完成一系列操作

#include<stdio.h>
#include<stdlib.h>
typedef struct{
double element;
}Triplet;
void creat(Triplet &L, double v1, double v2,double v3) //创建三元组
{
L.element = (double )malloc(3sizeof(double));
if(L.elementNULL)
{
printf(“申请内存失败”);
exit(-1);
}
else
{
(L.element)=v1;
(L.element+1)=v2;
(L.element+2)=v3;
}
}
int Find(Triplet L)
{
int t,h=0;
printf(“请输入要查找的元素”);
scanf("%d", &t);
if(1>t||t>3)
{
printf(“Error 输入非法\n”);
h = 1;
}else{
printf(“元素位置为:%lf\n”, (L.element+t-1));
}
return h;
}
int change(Triplet &L) //改变某一点的值
{
int t,h=0;
printf(“请输入要修改的位置:”);
scanf("%d", &t);
if(t<1||t>3)
{
printf(“ERROR 输入错误”);
h = 1;
}
else
{
printf(“输入要修改的值”);
double w=0;
scanf("%lf", &w);
(L.element+t-1)=w;
}
return h;
}
int Max(Triplet L) //取最大的值
{
int i=0;
double Max=-9999.0;
for(i=0; i<3; i++)
{
if(
(L.element+i)>=Max)
{
Max=
(L.element+i);
}
}
printf(“三元组的最大值为:%lf”,Max);
}
int Min(Triplet L) //取最小的值
{
int i=0;
double Min=9999;
for(i=0; i<3; i++)
{
if(
(L.element+i)<=Min)
{
Min=
(L.element+i);
}
}
printf(“三元组的最小值为:%lf”,Min);
}
int GET(Triplet L) //输出三元组
{
int i=0;
for(i=0; i<3; i++)
{
printf("%lf ", (L.element+i));
}
putchar(’\n’);
}
int sort1(Triplet L) //判断是否为降序排列
{
int i = 0,t=0;
int h;
for(i=0; i<3; i++)
{
if(
(L.element+i)>=
(L.element+i+1))
{
t++;
}
}
if(t
2)
{
printf(“是降序排列”);
h=1;
}
else
{
printf(“不是降序排列”);
h=0;
}
return h;
}
int sort2(Triplet L) //判断是否为升序排列
{
int i = 0,t=0;
int h;
for(i=0; i<3; i++)
{
if(
(L.element+i)<=(L.element+i+1))
{
t++;
}
}
if(t==2)
{
printf(“是升序排列”);
h=1;
}
else
{
printf(“不是升序排列”);
h=0;
}
return h;
}
int destory(Triplet &L) //销毁三元组
{
free(L.element);
return 0;
}
int Menu(Triplet &L)
{
int h = 1;
int fun;
printf("
-------------------------------\n");
printf("| 欢迎! |\n");
printf("|1.取三元组的一个分量 |\n");
printf("|2.置换三元组的一个分量 |\n");
printf("|3.求三元组最的最大分量 |\n");
printf("|4.求三元组最的最小分量 |\n");
printf("|5.显示三元组 |\n");
printf("|6.判断三元组是否降序排列 |\n");
printf("|7.判断三元组是否升序排列 |\n");
printf("|8.退出 |\n");
printf("
-------------------------------*\n");
printf(“输入数字选取您所需要的功能 “);
scanf(”%d”,&fun);
switch(fun)
{
case 1:Find(L);h=1;break;
case 2:change(L);h=1;break;
case 3:Max(L);h=1;break;
case 4:Min(L);h=1;break;
case 5:GET(L);h=1;break;
case 6:sort1(L);h=1;break;
case 7:sort2(L);h=1;break;
case 8:h=0;break;
default:system(“cls”);printf(“非法输入!\n”);h=1;break;
}
return h;
}
int main(void)
{
Triplet L;
int statue=1;
double a1,a2,a3;
printf(“请输入三元组的值:”);
scanf("%lf,%lf,%lf", &a1,&a2,&a3);
creat(L,a1,a2,a3);
system(“cls”);
while(statue)
{
statue = Menu(L);
}
destory(L);
return 0;
}

上一篇:LC.334. Increasing Triplet Subsequence


下一篇:蒙特卡洛计算亚式期权以及希腊字母计算