C语言编程 集合子集问题
发布网友
发布时间:2022-04-23 09:17
我来回答
共2个回答
热心网友
时间:2023-07-20 05:00
#include<iostream>
#include<string>
#include<fstream>
#include<conio.h>
using namespace std;
//定义集合的最大数量,可以自己修改
#define MAX_COUNT 100
//集合使用数组来保存
int SetA[MAX_COUNT];
int SetB[MAX_COUNT];
int CountA = 0; //集合A的长度
int CountB = 0; //集合B的长度
///函数Contains,判定集合是否包含一个数
///@param set, 集合
///@param count, 集合Set中的元素个数
///@param value, 是否包含的值
///@return set包含value,返回true,否则返回false
bool Contains(int set[], int count, int value)
{
for(int i = 0; i < count; i++)
if(value == set[i])
return true;
return false;
}
//输入一个集合
void InputSet(int set[], int &count)
{
string s;
//读取这一行
getline(cin, s);
int i = 0;
while(i < s.length() )
{
int spacePos = 0;
spacePos = s.find(' ', i); //查找空格下一个空格的位置
if(spacePos < 0 || spacePos >= s.length() - 1) //如果没有空格或者空格超出了字符串范围,跳出循环
break;
string temp = s.substr(i, spacePos - i);
if(temp == "") //如果字符串为空,执行下一条
continue;
int value = stoi(temp);
if(!Contains(set, count, value)) //如果集合中已经包含此数字了,就不再添加
set[count++] = value;
i = spacePos + 1;
}
//读取最后一个数
string temp = s.substr(i, s.length() - i);
int value = stoi(temp);
if(!Contains(set, count, value))
set[count++] = value;
}
//判断是为setB是否为setA的子集
bool IsSubSet(int setA[], int countA, int setB[], int countB)
{
for(int i = 0; i < countB; i++)
if( !Contains(setA, countA, setB[i]))
return false;
return true;
}
void main()
{
cout<<"注意:只能输入整数,并且数字之间以空格隔开。"<<endl<<endl;
cout<< "请输入集合A:" <<endl;
InputSet(SetA, CountA);
cout<< "请输入集合B:" <<endl;
InputSet(SetB, CountB);
cout<<endl;
cout<<"集合A和集合B比较结果"<<endl;
if(IsSubSet( SetA, CountA, SetB, CountB))
cout<<"集合B是集合A的子集"<<endl;
else
cout<<"集合B不是集合A的子集"<<endl;
cout<<endl;
cout<<"按任意键退出"<<endl;
getch();
}
热心网友
时间:2023-07-20 05:01
#include <stdio.h>
#define A 5 //数组的大小采用宏定义,方便修改
#define B 3
void Contain (int a[], int num);
void Compare (int a[], int b[]);
int main ()
{
int a[A] = {1, 2, 3, 4, 5}; //数组的元素可以自己设置去验证
int b[B] = {1, 2, 6};
int flag = 0;
printf("Input a num:");
scanf("%d", &flag);
Contain (a, flag);
Compare (a, b);
return 0;
}
/*
a ∈ A ?
*/
void Contain (int a[], int num)
{
int i;
for(i=0; i<A; i++)
{
if(num == a[i])
{
printf("%d ∈ A\n", num);
break;
}
}
// printf("i = %d\n", i);
if(i == 5)
printf("%d !∈ A\n", num);
return;
}
/*判断集合B是否为集合A的子集 */
void Compare (int a[], int b[])
{
int i, j;
//如果b数组大小比a数组大
if(sizeof(b)>sizeof(a))
{
printf("B不是A的子集.\n");
return;
}
for(i=0; i<B; i++)
{
for(j=0; j<A; j++)
{
if(b[i] != a[i])
{
printf("B不是A的子集.\n");
return;
}
}
}
printf("B是A的子集.\n");
}
追问1,2条件是两个不同的程序--。
追答
两个main?拆一下就行了我把文件上传给你吧,你看看这两个文件。
用C语言编写集合子集的程序怎么写?
\x0d\x0a{1 5},{2 5},{3 5},{4 5}就像这些子集,追赶者从1一直追赶到了4,然后与累积者{5}相遇,累积者变成{4 5};追赶者从头继续从1一直追赶到了3,然后与累积者{4 5}相遇,累积者变成{3 4 5};如此反复,可以把这个全部输出来。\x0d\x0a而累积者始终是连续的,比如{4 5}、{3 4 5}、{2...
用C语言编写集合子集的程序怎么写?
如下:#include#defineAMAX 6staticcharA[AMAX]={'a','b','c','d','e','f'};voidprint(intlen)//len为子集的大小,即元素的个数{inti,j,k;j=k=0;for(i=0;i{if(AMAX-ifor(j=0;j{printf("%c",A[i+j]);}printf("\n");}return;}intmain(){inti;for(i=1;i=AMAX;i...
给定两个集合A和B,判定A是否是B集合的子集,用C语言怎么写?
(1)输入A的元素个数,并输入各个元素;(2)输入B的元素个数,并输入各个元素;(3)看A重元素是否全部在B中,在就输出“A是B子集”;否则输出“A不是B子集”include <stdio.h> int main(){ int a[20] = { 0 }, b[30] = { 0 }, n, m, i, j,cnt = 0;//输入集合a的元素...
用C语言编写集合子集的程序怎么写?
如下:#include #define AMAX 6 static char A[AMAX] = {'a','b','c','d','e','f'}; void print(int len)//len为子集的大小,即元素的个数 { int i,j,k; j=k=0; for(i=0;i { if(AMAX-i for(j=0;j { printf("%c ",A[i+j]); } printf("\n"); } return...
判断A集合是B集合的子集。C语言的
//判断集合A是否为集合B的子集 int i ,j,k;cin>>m;//输入集合A的个数 cin>>n;//输入集合B的个数 for (i=1;i<=m;i++){ for (j=1;j<=n;j++){ if (a[i]==b[j])k++;} } if (k !=b.m )cout<<"集合A不是集合B的子集!"<<endl;=== 之前先用for循环给数组AB赋...
用C语言编写给定一个集合A,求A的所有非空子集。
int main (){ char A[25];gets(A);int i,t=0,k=0,h,number,l=strlen(A);int a[10]={1};number=(l-1)/2;h=pow(2,number)-1;for(t=1;t<=h;t++){ printf("{");for(i=0;i<number;i++){ if(a[i]){ if(k++)printf(",");printf("%c",i+97);} } k=0;p...
大一c语言求子集题目,求教
按照题目要求编写的打印字符的所有组合子集的C语言程序如下 include<stdio.h> include<math.h> void printall(char data[],int num){ int real_size=(int)pow(2,num);int i,j,k=0,total=0;printf("%d\n",real_size);for(i=0;i<real_size;i++){ printf("{");for(j=0;j<num;j...
...c,d,e,f}编写程序打印出A的所有非空子集 用C语言解决
F3(A)= C,F2(B)= E F4(A)= D,F4(B)= C F5(A)= D(二)中,f1 = D F6(A)= D,F1(B)= E F7(A)= E,F7(B)= C F8(A)= E,F8(B)= D F9(A)= E,F9(B)= E 总数:9 2。1)A = R,B = {Y | Y> 0},F:X→| X |,比| 0 |...
集合a={1.2.3.4.5.6.7.8}在C语言里面怎么表示
4、A的非空真子集的个数是2的n次幂减二;5、空集是任意一个集合的子集,是任意一个非空集合的真子集;6、任何一个集合是它本身的子集,即A?A;空集只有一个子集,即它本身;7、集合的子集和真子集具有传递性:若A?B、B?C,则A?C;若A?B、B?C,则A?C。
已知有一集合A={a,b,c,d,e,f},要求编写程序打印A的所有非空子集(含A...
A = B = {A},然后X2 +(B +2)+1 = 0只有一个解X =一 韦达定理,我们有:+ = - (二2),一个* = 1 a = 1或-1 当α= 1时,b = -4 ×2 +斧+ b的=χ^ 2 +的X 4 = 0 1 =(-1 +根第17号)/ 2×2 =(-1 - 17的平方根)/ 2 C = {(-1 +根号17)...