-1
したがって、私は、連合、交差点を見つけて、bが入力された2グループの文字のサブセットであるかどうかを判断するプログラムを書こうとしています。私は[] Bのcの連合文字プログラムの問題
を[]
と
ac
ため
abcd
を入力した場合
だから、それは印刷する必要があります:
交差点:AC
を共用体:abcd
"bはaのサブセットです"。
私のコードは大部分のために働いていますが、私のユニオン関数は出力を与えていません。それを修正するための提案はありますか?私はそれを実行し、実行されているようだが、dは誰かのために印刷されていない...私のブールステートメントが間違っている?
マイコード:getunions
で
#include <stdio.h>
#include "simpio.h"
#include "genlib.h"
#include "strlib.h"
#define n 26
/* typedef enum letters {a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z};
letters letter; */
bool intersection(bool a[], bool b[], bool c[]);
void GetSet(bool set[]);
void init(bool a[]);
void printArray(bool set[]);
void getunions(bool a[], bool b[], bool d[]);
void contain(bool a[], bool b[]);
main()
{
bool a[n], b[n], c[n], d[n];
init(a);
init(b);
init(c); /* intersection */
init(d); /* union */
printf("Entries for a = \n");
GetSet(a);
printf("Entries for b = \n");
GetSet(b);
intersection(a,b,c);
printArray(c);
getunions(a,b,d);
printArray(d);
contain(a,b);
getchar();
}
void init(bool set[])
{
int i;
for(i=0;i<n;i++)
{
set[i]=FALSE;
}
}
void GetSet(bool set[])
{
int i;
string str=GetLine();
int len=StringLength(str);
for(i=0;i<len;i++)
{
set[str[i]-97]=TRUE;
}
}
bool intersection(bool a[], bool b[], bool c[])
{
int i;
for(i=0;i<n;i++)
{
if(b[i]&&a[i]==TRUE) c[i]=TRUE;
}
printf("\n\nThe intersection is\n");
return c;
}
void getunions(bool a[], bool b[], bool d[])
{
int i;
for(i=0;i<n;i++)
{
if(a[i]==TRUE||b[i]==TRUE)
d[i]==TRUE;
}
}
void printArray(bool set[])
{
int i;
for(i=0;i<n;i++)
{
if(set[i])
printf("%c", i+97);
}
}
void contain(bool a[], bool b[])
{
int i;
bool flag;
for(i=0;i<n;i++)
{
if(a[i]&&b[i]) flag=TRUE;
}
if(flag) printf("\n\nb is a subset of a.\n");
else printf("\n\nb is not a subset of a.\n");
}