• 목록
  • 아래로
  • 위로
  • 쓰기
  • 검색

C언어 집합의 원소 수

레이나sv
601 0 0

캡처.PNG : 집합의 원소 수

#include<iostream>
#include<string>
using namespace std;

const MAXNUM = 100;     // 최대 원소 수
enum Bool { FALSE, TRUE };  // FALSE = 0, TRUE = 1 
enum Error { NO, OVERFLOW };  // NO = 0, OVERFLOW =1


class Set{
       int elems[MAXNUM];    // 원소
       int num;              // 집합의 원소 수
    public:
       void empty()   { num = 0; }
       Bool member(int);
       Error insert(int);
       void intersect(Set*, Set*);
       Bool subset(Set*);
      void print(void); 
}; // Set class
Bool Set::member(int e)
{
 for(int i=0;i<num;++i)
  if(elems[i]==e)
   return TRUE;
  return FALSE;
};
Error Set::insert(int e)
{
 for(int i=0;i<num;++i)
  if(elems[i]==e)
   return NO;
  if(num<MAXNUM)
  {
   elems[num++]=e;
   return NO;
  }
  else
   return OVERFLOW;
}
void Set::print()
{
 cout<<"{";
 for (int i=0; i<num-1;++i)
  cout<<elems[i]<<",";
 if(num>0)
  cout<<elems[num-1];
 cout<<"}n";
}
void Set::intersect(Set *s1, Set *s2)
{
 for(int i=0;i<s1->num;i++)
 {
  if(s2->member(s1->elems[i]))
   insert(s1->elems[i]);
 }
}
Bool Set::subset(Set *s)
{
 for(int i=0;i<s->num;i++)
 {
  if(member(s->elems[i])==FALSE)
   return FALSE;
 }
 return TRUE;
}
void main(void)
{
    Set s1, s2, s3;
    s1.empty();    s2.empty();    s3.empty();
   
    s1.insert(45); s1.insert(72);  s1.insert(56); s1.insert(12);
    s2.insert(56); s2.insert(72);  s2.insert(69);

    cout << "s1 = "; s1.print();
    cout << "s2 = "; s2.print();
 
    s3.intersect(&s1, &s2);
    cout << "s1 집합과 s2 집합의 교집합  s3 = "; s3.print();
    if(s1.subset(&s3))        
        cout << "s3는 s1의 부분집합이다.n";
    else       
        cout << "s3는 s1의 부분집합이 아니다.n";
    if(s1.subset(&s2))       
        cout << "s2는 s1의 부분집합이다.n";
    else       
        cout << "s2는 s1의 부분집합이 아니다.n";
}  

신고공유스크랩

댓글 0

댓글 쓰기
권한이 없습니다. 로그인
에디터 모드

신고

"님의 댓글"

이 댓글을 신고하시겠습니까?

댓글 삭제

"님의 댓글"

이 댓글을 삭제하시겠습니까?

공유

퍼머링크