编制一个能演示执行集合的并、交和差运算的程序。允许采用顺序存储或链式存储来实现。

用c++编写【问题描述】编制一个能演示执行集合的并、交和差运算的程序。允许采用顺序存储或链式存储来实现。【基本要求】(1)集合的元素限定为小写字符〔a..z〕。(2)演示... 用c++编写
【问题描述】
编制一个能演示执行集合的并、交和差运算的程序。允许采用顺序存储或链式存储来实现。
【基本要求】
(1) 集合的元素限定为小写字符〔a. .z〕。
(2) 演示程序以用户和计算机的对话方式执行。
【测试数据】
(1) Set1=magazine ,Set2=paper,
Set1∪Set2=aeginmprz,Set1∩Set2=ae,Set1-Set2=gimnz。
(2) Set1=0120per4a6tion89,Set2=error data,
Set1∪Set2adeinoprt,Set1∩Set2aeort,Set1-Set2=inp。
展开
 我来答
cocokim_122
2010-07-09 · TA获得超过530个赞
知道小有建树答主
回答量:183
采纳率:0%
帮助的人:229万
展开全部
这次好了,可以用char类型了。 如果你还想用int类型,就在文件头部加上“#define USE_INT”就行了。 有一个问题,不能输入0作为集合元素,因为我用0作为输入结束标志了,呵呵。

在VC里面新建一个空的win32 console工程,再新建一个cpp文件,把下面的代码拷贝进去就可以直接运行了。

// SetOperations.cpp : 定义控制台应用程序的入口点。
//
#include <iostream>
#include <List>
using namespace std;

#ifdef USE_INT
#define MYTYPE int
#else
#define MYTYPE char
#endif

bool IsElementInList(list<MYTYPE> aSet, MYTYPE iElement)//查看一个元素是否在集合中
{
list<MYTYPE>::iterator iter;
for (iter = aSet.begin(); iter != aSet.end(); iter++)
{
if (*iter == iElement)
{
return true;
}
}
return false;
}

void Trim(list<MYTYPE> &aSet)//去除集合中的重复元素
{
list<MYTYPE> newSet;
list<MYTYPE>::iterator iter;
for (iter = aSet.begin(); iter != aSet.end(); iter++)
{
if (!IsElementInList(newSet, *iter))
{
newSet.push_back(*iter);
}
}
aSet = newSet;
}

void func1(list<MYTYPE> set1, list<MYTYPE> set2)//并
{
list<MYTYPE> newSet = set1;

list<MYTYPE>::iterator iter;
for (iter = set2.begin(); iter != set2.end(); iter++)
{
if (IsElementInList(newSet, *iter))
{
continue;
}
else
{
newSet.push_back(*iter);
}
}

Trim(newSet);
newSet.sort();
cout<<"集合的并操作结果是:"<<endl;
cout<<"{";
for (iter = newSet.begin(); iter != newSet.end(); iter++)
{
cout<<*iter<<" ";
}
cout<<"}"<<endl;
}

void func2(list<MYTYPE> set1, list<MYTYPE> set2)//交
{
list<MYTYPE> newSet;
list<MYTYPE>::iterator iter;

for (iter = set1.begin(); iter != set1.end(); iter++)
{
if (IsElementInList(set2, *iter))
{
newSet.push_back(*iter);
}
else
{
continue;
}
}

Trim(newSet);
newSet.sort();
cout<<"集合的交操作结果是:"<<endl;
cout<<"{";
for (iter = newSet.begin(); iter != newSet.end(); iter++)
{
cout<<*iter<<" ";
}
cout<<"}"<<endl;
}

void func3(list<MYTYPE> set1, list<MYTYPE> set2)//差
{
list<MYTYPE> newSet;
list<MYTYPE>::iterator iter;

for (iter = set1.begin(); iter != set1.end(); iter++)
{
if (IsElementInList(set2, *iter))
{
continue;
}
else
{
newSet.push_back(*iter);
}
}

Trim(newSet);
newSet.sort();
cout<<"集合的差操作结果是:"<<endl;
cout<<"{";
for (iter = newSet.begin(); iter != newSet.end(); iter++)
{
cout<<*iter<<" ";
}
cout<<"}"<<endl;
}

int main(void)
{
cout<<"输入集合1的元素,按0结束"<<endl;

list<MYTYPE> set1, set2;
list<MYTYPE>::iterator iter;
MYTYPE iIn = -1;

#ifdef USE_INT
while (0 != iIn)
#else
while ('0' != iIn)
#endif
{
cin>>iIn;
set1.push_back(iIn);
}
set1.pop_back();
Trim(set1);
set1.sort();

cout<<"输入的集合1是:"<<endl;
cout<<"{";
for (iter = set1.begin(); iter != set1.end(); iter++)
{
cout<<*iter<<" ";
}
cout<<"}"<<endl;

//////////////////////////////////////////////////////////////////////////

cout<<"输入集合2的元素,按0结束"<<endl;

iIn = -1;

#ifdef USE_INT
while (0 != iIn)
#else
while ('0' != iIn)
#endif
{
cin>>iIn;
set2.push_back(iIn);
}
set2.pop_back();
Trim(set2);
set2.sort();

cout<<"输入的集合2是:"<<endl;
cout<<"{";
for (iter = set2.begin(); iter != set2.end(); iter++)
{
cout<<*iter<<" ";
}
cout<<"}"<<endl;

//////////////////////////////////////////////////////////////////////////
here:
cout<<"选择操作1并,2交,3差,0退出"<<endl;
cin>>iIn;
switch(iIn)
{
#ifdef USE_INT
case 1:
func1(set1, set2);
break;
case 2:
func2(set1, set2);
break;
case 3:
func3(set1, set2);
break;
case 0:
return 0;
break;
#else
case '1':
func1(set1, set2);
break;
case '2':
func2(set1, set2);
break;
case '3':
func3(set1, set2);
break;
case '0':
return 0;
break;
#endif
default:
break;
}

goto here;
}
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式