实验二
2018-03-14 本文已影响0人
林之禾
//============================================================================
// Name : Test3.cpp
// Author : ldl
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include "Test3.h"
using namespace std;
int main(void) {
Triplet T;
ElemType e;
setvbuf(stdout, NULL, _IONBF, 0);
puts("请输入三个数字:");
ElemType v1, v2, v3;
int index;
scanf("%d %d %d", &v1, &v2, &v3);
int i = InitTriplet(T, v1, v2, v3);
if (i) {
printf("初始化成功!三元组内值为:");
for (int i = 0; i < 3; ++i) {
printf("%d\t", T[i]);
}
printf("\n");
} else {
puts("初始化失败");
}
puts("输入需要获取的数字的位置:");
scanf("%d", &index);
Get(T,index,e);
printf("查询的值为:%d\n", e);
puts("输入需要代替的数字的位置与数字:");
scanf("%d %d", &index, &e);
Put(T,index,e);
printf("替换后三元组内值:");
for (int i = 0; i < 3; ++i) {
printf("%d\t", T[i]);
}
printf("\n");
if (IsAscending(T)) {
puts("三元组内元素为升序");
} else {
puts("三元组内元素不为升序");
}
if (IsDecending(T)) {
puts("三元组内元素为降序");
} else {
puts("三元组内元素不为降序");
}
puts("三元组内最大值为:");
printf("%d\n", Max(T, e));
puts("三元组内最小值为:");
printf("%d\n", Min(T, e));
DestroyTriplet(T);
puts("已销毁");
return 0;
}
/*
* Test3.h
*
* Created on: 2018年3月10日
* Author: 林道利
*/
#define OK 1
#define ERROR 0
typedef int ElemType;
typedef ElemType* Triplet;
typedef int Status;
//操作结果:构造三元组T,元素e1, e2和e3分别被赋以v1, v2, v3值
Status InitTriplet(Triplet &T, ElemType v1, ElemType v2, ElemType v3) {
if (!(T = (ElemType *) malloc(3 * (sizeof(ElemType))))) {
return ERROR;
}
T[0] = v1;
T[1] = v2;
T[2] = v3;
return OK;
}
//操作结果:三元组T被销毁
Status DestroyTriplet(Triplet &T) {
free(T);
T = NULL;
return OK;
}
//初始条件:三元组T已存在,1≤i≤3
//操作结果:用e返回T的第i元的值
ElemType Get(Triplet T, int i, ElemType &e) {
e = T[i-1];
return e;
}
//初始条件:三元组T已存在
//操作结果:如果T的三个元素按升序排列,则返回1,否则返回0
Status IsAscending(Triplet T) {
for (int i = 0; i < 2; ++i) {
if (T[i] > T[i + 1]) {
return ERROR;
}
}
return OK;
}
//初始条件:三元组T已存在
//操作结果:如果T的三个元素按降序排列,则返回1,否则返回0
Status IsDecending(Triplet T) {
for (int i = 0; i < 2; ++i) {
if (T[i] < T[i + 1]) {
return ERROR;
}
}
return OK;
}
//初始条件:三元组T已存在,1≤i≤3
//操作结果:改变T的第i元的值为e
Status Put(Triplet &T, int i, ElemType e) {
T[i-1] = e;
return OK;
}
//初始条件:三元组T已存在
//操作结果:用e返回T的三个元素中的最大值
ElemType Max(Triplet T, ElemType &e) {
e = T[0];
for (int i = 0; i < 3; ++i) {
if (e < T[i]) {
e = T[i];
}
}
return e;
}
//初始条件:三元组T已存在
//操作结果:用e返回T的三个元素中的最小值
ElemType Min(Triplet T, ElemType &e) {
e = T[0];
for (int i = 0; i < 3; ++i) {
if (e > T[i]) {
e = T[i];
}
}
return e;
}