이산수학 2장 연습문제
본 자료는 3페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
해당 자료는 3페이지 까지만 미리보기를 제공합니다.
3페이지 이후부터 다운로드 후 확인할 수 있습니다.

본문내용

char *element, unsigned long *subset);
void bitSet(unsigned long *subset, char *ptr);
int confirm(unsigned long subset, char target);
(utils.h) 집합을 만들고 목표 값이 참인지 검사하는 함수의 원형
04. 문제 1번에서 정의된 집합을 이용하여, A, B, C의 원소의 수를 구하는 프로그램을 작성하라.
#include "subset.h"
#include "utils.h"
#include "printout.h"
int main()
{
unsigned long seta = 0L,
setb = 0L,
setc = 0L,
/* A, B, C의 원소의 수가 같으므로 테스트용 집합 추가 */
testset = 0L;
makeSet("A", "adfhmx", &seta);
makeSet("B", "mnprtv", &setb);
makeSet("C", "hkqsuy", &setc);
makeSet("T", "abcdwxyz", &testset);
printf("\nnumber of set-A's element: %i\n", count(&seta));
printf("number of set-B's element: %i\n", count(&setb));
printf("number of set-C's element: %i\n", count(&setc));
printf("number of set-T's element: %i\n", count(&testset));
return 0;
}
(subset.c) 함수의 원소의 수를 구하는 프로그램의 주 함수.
#include
#include
#include
#define UNIVSET 26
#define A_VALUE 97
#define SETBIT(name, n) ((name) |= (01 << (n)))
#define GETBIT(name, n) (((name) >> (n)) & 01)
(subset.h) 원소의 수를 구하는 프로그램의 헤더파일.
#include "subset.h"
#include "printout.h"
void printSet(char *setname, unsigned long subset)
{
int i;
int status = 0;
printf("%s = {", setname);
for(i = 0; i < UNIVSET; i++)
if(GETBIT(subset, i)) {
if(status != 0)
printf(", ");
printf("%c", i + A_VALUE);
status = 1;
}
printf("}\n");
}
void printBit(unsigned long subset)
{
int i;
for(i = 0; i < UNIVSET; i++)
printf("%i", (subset >> i) & 01);
putchar('\n');
}
(printout.c) 집합과 비트 열을 출력하는 함수.
void printSet(char *setname, unsigned long subset);
void printBit(unsigned long subset);
(printout.h) 집합과 비트 열을 출력하는 함수들의 원형.
#include "subset.h"
#include "printout.h"
#include "utils.h"
void makeSet(char *name, char *element, unsigned long *subset)
{
bitSet(subset, element);
printSet(name, *subset);
printBit(*subset);
}
void bitSet(unsigned long *subset, char *ptr)
{
for(; *ptr != '\0'; ptr++)
if(islower(*ptr))
SETBIT(*subset, *ptr - A_VALUE);
}
int count(unsigned long *subset) /* 원소의 개수를 세는 함수 */
{
int i;
int cnt;
for(i = 0, cnt = 0; i < UNIVSET; i++)
if(GETBIT(*subset, i))
cnt++;
return cnt;
}
(utils.c) 집합을 만들고 원소의 수를 세는 함수.
void bitSet(unsigned long *subset, char *ptr);
void makeSet(char *name, char *element, unsigned long *subset);
int count(unsigned long *subset);
(utils.h) 집합을 만들고 원소의 수를 세는 함수의 원형.
05. 문제 1번에서 정의된 집합을 이용하여, A X B의 원소를 출력하는 프로그램을 작성하라.
#include "subset.h"
#include "utils.h"
#include "printout.h"
int main()
{
unsigned long seta = 0L,
setb = 0L;
int i, j; /* 2중 루프를 위한 변수들 */
int status = 0; /* 쉼표를 찍기 위한 변수 */
makeSet("A", "adfhmx", &seta);
makeSet("B", "mnprtv", &setb);
printf("\nA X B =\n{");
for(i = 0; i < UNIVSET; i++)
if(GETBIT(seta, i)) /* A의 원소 중에서 하나 선택 */
for(j = 0; j < UNIVSET; j++)
if(GETBIT(setb, j)) { /* 선택된 A의 원소와 B의 모든 원소 조합 */
if(status != 0)
printf(", ");
printf("(%c, %c)", i + A_VALUE, j + A_VALUE);
status = 1;
}
printf("}\n");
return 0;
}
(subset.c) 카티션곱을 출력하는 프로그램의 주 함수.
(subset.h) (printout.c) (printout.h) (utils.c) (utils.h) 이 파일들은 04번 문제의 파일과 같음

키워드

  • 가격1,000
  • 페이지수10페이지
  • 등록일2009.03.13
  • 저작시기2007.4
  • 파일형식한글(hwp)
  • 자료번호#522818
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니