Set(DS)(15C++ for lab)
来源:互联网 发布:中关村软件开发公司 编辑:程序博客网 时间:2024/05/10 11:19
Set(DS)(15C++ for lab)
标签(空格分隔): 程序设计实验 c++
本人学院
- SetDS15C for lab
- 标签空格分隔 程序设计实验 c
- 本人学院
- description
- 读题
- my answer
- the standard answer
description
A set is any well-defined collection of objects called the elements or members of the set.
Required Tasks:
- Finish Set.cpp. Its header file is Set.hpp.
(1) Defines two constructors. One without parameters, Another has two parameter, mean initial set with a array and its size.
(2) Defines five function. All description is in Set.hpp.
Hint:
集合中成员不重复。
不需要考虑集合中成员的顺序。
main.cpp
//// main.cpp// C++//// Created by 李天培 on 16/2/25.// Copyright © 2016年 lee. All rights reserved.//#include <iostream>#include <algorithm>#include "Set.hpp"void display(int* members, int size) { std::sort(members, members + size); std::cout << "{"; for (int i = 0; i < size; i++) { if (i < size - 1) std::cout << members[i] << ", "; else std::cout << members[i]; } std::cout << "}" << std::endl;}int main(int argc, const char * argv[]) { int test[5]; std::cin >> test[0] >> test[1] >> test[2] >> test[3] >> test[4]; // Constructor 1 Set s1 = Set(); display(s1.getMembers(), s1.getSize()); std::cout << "is empty set: " << s1.isEmptySet() << std::endl; // append func std::cout << "append: " << s1.append(test[0]) << std::endl; std::cout << "append: " << s1.append(test[4]) << std::endl; display(s1.getMembers(), s1.getSize()); // repeat append std::cout << "append: " << s1.append(test[0]) << std::endl; display(s1.getMembers(), s1.getSize()); std::cout << "is empty set: " << s1.isEmptySet() << std::endl; // Constructor 2 Set s2 = Set(test, 5); // remove func std::cout << "remove: " << s2.remove(test[0]) << std::endl; display(s2.getMembers(), s2.getSize()); // repeat append std::cout << "remove: " << s2.remove(test[0]) << std::endl; display(s2.getMembers(), s2.getSize()); return 0;}
Set.hpp
//// Set.hpp// C++//// Created by 李天培 on 16/2/25.// Copyright © 2016年 lee. All rights reserved.//#ifndef Set_hpp#define Set_hpp#include <stdio.h>#define MAX_MEMBERS 100class Set {private: int members[MAX_MEMBERS]; int size;public: // Create an empty set. Set(); // Create an set with some element. Set(int* m, int s); // append a element to set. // If element in the set, return false. // Or insert in set and return true. bool append(int e); // remove a element by its value from set. // If element in the set, then remove it and return true. // Or return false. bool remove(int e); // return true if the set is empty, or return false. bool isEmptySet(); // return set. int* getMembers(); // return size of set. int getSize(); // return false if element not in the set, or return true. bool isInSet(int e);};#endif /* Set_hpp */
读题
“集合中成员不重复。”
暗示在增添成员的函数中,增添成员前检查成员是否已在集合中.
my answer
Set.cpp
#include<iostream>#include"Set.hpp"using namespace std; // Create an empty set. Set::Set() { size = MAX_MEMBERS; members[size] = 0; } // Create an set with some element. Set::Set(int* m, int s) { size = 0; members[size] = 0; for (int i = 0; i < s; i++) { append(m[i]); } } // append a element to set. // If element in the set, return false. // Or insert in set and return true. bool Set::append(int e) { bool flag = true; int i; for (i = 0; i < size; i++) { if (e == members[i]) { flag = false; break; } } if (flag == true) { members[size] = e; size++; } return flag; } // remove a element by its value from set. // If element in the set, then remove it and return true. // Or return false. bool Set::remove(int e) { bool flag = false; int i; for (i = 0; i < size; i++) { if (e == members[i]) { flag = true; size--; for (int j = i; j < size; j++) { members[j] = members[j + 1]; } i--; } } return flag; } // return true if the set is empty, or return false. bool Set::isEmptySet() { if (size == 0) return true; else return false; } // return set. int* Set::getMembers() { return members; } // return size of set. int Set::getSize() { return size; } // return false if element not in the set, or return true. bool Set::isInSet(int e) { bool flag = false; int i; for (i = 0; i< size; i++) { if (e == members[i]) { flag = true; break; } } return flag; }
the standard answer
Set.cpp
//// Set.cpp// C++//// Created by 李天培 on 16/2/25.// Copyright © 2016年 lee. All rights reserved.//#include "Set.hpp"Set::Set() { size = 0;}Set::Set(int* m, int s) { size = 0; for (int i = 0; i < s ; i++) { if (!isInSet(m[i])) { members[size++] = m[i]; } if (size == MAX_MEMBERS) break; }}bool Set::append(int element) { if (size < MAX_MEMBERS && !isInSet(element)) { members[size] = element; size++; return true; } else { return false; }}bool Set::remove(int element) { for (int i = 0; i < size; i++) { if (members[i] == element) { members[i] = members[--size]; return true; } } return false;}bool Set::isEmptySet() { return (size == 0) ? true : false;}int* Set::getMembers() { return members;}int Set::getSize() { return size;}bool Set::isInSet(int element) { for (int i = 0; i < size; i++) { if (members[i] == element) { return true; } } return false;}
0 0
- Set(DS)(15C++ for lab)
- Set Operations(DS)(15C++)
- DS.Lab筆記
- DS.Lab筆記
- DS.Lab筆記
- DS.Lab筆記
- DS.Lab筆記
- DS.Lab筆記
- DS.Lab筆記
- DS.Lab筆記
- DS.Lab筆記
- (15 C++ Lab) Class for Time
- StringProblem(for lab)
- SimpleCalculator(for lab)
- Complex number(for lab)
- poj3224 Go for Lab Cup!
- Account's Balance(for lab)
- ‘孤单北半球’ for DP Lab
- 修改图片的色调,饱和度,亮度
- 如何下载Tomcat
- COGNOS设置隐藏列
- 干货分享:CDC实时数据复制,大神教你调性能
- 车辆定位识别姿态提取
- Set(DS)(15C++ for lab)
- java的接口、类、属性、方法各有哪些修饰符
- jquery easyui的datagrid在初始化的时候会请求两次URL?
- 使用RMAN 备份与恢复数据库
- Javascript - 易语言 QQTK加密算法翻译
- 设计模式--设计原则<一>
- 【Leetcode】39. Combination Sum
- [leetcode] 332. Reconstruct Itinerary
- 关于view.onMeasure()过程中MeasureSpec中SpecMode创建规则