이산수학 d1 프로젝트 2

12
이산치 수학 결과보고서 행렬 과목 : 이산치수학 발표 날짜 : 2012. 04.02(월) 담당교수님 : 차정원교수님 조원 : D1조 박구남, 이민준, 조용혁, 김선형

Upload: pkok15

Post on 13-Jan-2015

236 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: 이산수학 D1 프로젝트 2

이산치 수학

결과보고서

행렬

과목 : 이산치수학

발표 날짜 : 2012. 04.02(월)

담당교수님 : 차정원교수님

조원 : D1조 박구남, 이민준, 조용혁, 김선형

Page 2: 이산수학 D1 프로젝트 2

3/21 3/25 3/29

설계 및

역할분담

관련 자료 수집

프로그래밍

프로젝트 목표

행렬 표현 입력을 입력받아서 reflexive, symmetric, irreflexive

경우에 yes/no인지 출력하는 프로그램 작성하기

역할 분담

자료조사 : 박구남, 김선형

프로그래밍: 이민준, 조용혁

프로젝트 진행도

진행시 문제점

조원 대부분이 프로그래밍 언어 실력이 부족하여 프로그램과 알고리즘 이해에 있어

어려움이 있었음.

Page 3: 이산수학 D1 프로젝트 2

초안.

#include<stdio.h>#include<stdlib.h>#include<string.h>

int main(void){

int i,j;//i = 행 ,j = 열int a=0,d=0; //a 배열을한칸씩이동int count1=1;// , 이거 개수구하기int count2=0;// [ 개수int count3=1;// ] 개수

char pstr[100];//내가받은문자열 크기

printf("아무 문자열이나입력하세요: ");while( gets( pstr) != NULL)

{printf( "%s\n", pstr);break

}while(pstr[a] != NULL)

{if(pstr[a] == ']')

count3++;// ]을 파악a++;//배열을 한칸씩

}while(pstr[d] != ']')

{if(pstr[d] == ',')count1++; //,을파악d++; //배열을 한칸씩

}

i=count3-2; // 행j=count1; // 열

printf("행 %d\,",i);printf("렬 %d",j);return 0;

}

이 초안은 입력받은 행렬이 어떤 행렬인지 파악하기 위한 코딩이다. 만약 입력받은 행렬이

[[1,0,0][0,1,1][1,1,1]]이면 행은 3이고 열도 3으로 출력된다. 이제 반사, 비반사, 대칭의

관계 즉, Y/N를 알아보기 위하여 조건문을 추가해서 코드 해 보려 하고 있습니다.

Page 4: 이산수학 D1 프로젝트 2

최종안

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int main(void)

{

int i,j; //i=행,j=열

int a=0,d=0; //a 배열을 gkszksTLr 이동

int count1 = 1; //,이거 개수 구하기

int count2 = 0; // [ 개수

int count3 = 1; // ] 개수

char pstr[100]; // 내가 받은 문자열

printf(“아무 문자열이나 입력하시오:”);

while(gets(pstr) !=NULL)

{

printf("%s\n",pstr);

break;

}

while(pstr[a] !=NULL)

{

if(pstr[a] ==']')

count3++; // ]을 파악

a++; // 배열을 한칸씩

}

while(pstr[d] !=']')

{

if(pstr[d] ==',')

count1++; //,을 파악

d++; //배열을 한칸씩

}

i = count3-2;// 행

j = count1; // 열

printf("행 : %d\n",i);

printf("열 : %d\n",j);

//--------------------------reflexive 판별 -----------------------------

Page 5: 이산수학 D1 프로젝트 2

if(i==2 && j==2)

{

if(pstr[2] =='1' && pstr[9] =='1')

printf("reflexive = yes\n");

else

printf("reflexive = no\n");

}

if(i==3&&j==3)

{

if(pstr[2] =='1' && pstr[11] =='1' && pstr[20]=='1')

printf("reflexive = yes\n");

else

printf("reflexive = no\n");

}

if(i==5 && j==5)

{

if(pstr[2] =='1' && pstr[15] =='1' && pstr[28] =='1' && pstr[41] =='1' &&

pstr[54] =='1')

printf("reflexive = yes\n");

else

printf("reflexive = no\n");

}

//---------------------------irreflexive 판별---------------------------

if(i==2 && j==2)

{

if(pstr[2] == '0' && pstr[9] == '0')

printf("irreflexive = yes\n");

else

printf("irreflexive = no\n");

}

if(i==3 && j==3)

{

if(pstr[2] =='0' && pstr[11] =='0' && pstr[20] =='0')

printf("irreflexive = yes\n");

else

printf("irreflexive = no\n");

}

if(i==4 && j==4)

Page 6: 이산수학 D1 프로젝트 2

{

if(pstr[2] =='0' && pstr[13] =='0' && pstr[24] =='0' && pstr[35] == '0')

printf("irreflexive = yes\n");

else

printf("irreflexive = no\n");

}

if(i==5 && j==5)

{

if(pstr[2] =='0' && pstr[15] =='0' && pstr[28] =='0' && pstr[41] =='0' &&

pstr[54] =='0')

printf("irreflexive = yes\n");

else

printf("irreflexive = no\n");

}

//-----------------------symmetric 판별------------------------------

if(i==2 && j==2)

{

if(pstr[4] == pstr[7])

printf("symmetric = yes\n");

else

printf("symmetric = no=n");

}

if(i==3 && j==3)

{

if(pstr[4] == pstr[9] && pstr[6] == pstr[16] && pstr[13] == pstr[18])

printf("symmetric = yes\n");

else

printf("symmetric = no\n");

}

if(i==4 && j==4)

{

if(pstr[4] == pstr[11] && pstr[6] == pstr[20] && pstr[8] == pstr[29] &&

pstr[17] == pstr[31] && pstr[15] == pstr[22] && pstr[26] == pstr[33])

printf("symmetric = yes\n");

else

printf("symmetric = no\n");

}

Page 7: 이산수학 D1 프로젝트 2

if(i==5 && j==5)

{

if(pstr[4] == pstr[13] && pstr[6] == pstr[24] && pstr[8] == pstr[35] &&

pstr[10] == pstr[46] && pstr[17] == pstr[26] && pstr[19] == pstr[37]

&& pstr[21] == pstr[48] && pstr[30] == pstr[39] && pstr[32] ==

pstr[50]&& pstr[43] == pstr[52])

printf("symmetric = yes\n");

else

printf("symmetric = no\n");

}

return 0;

}

초안에서 알아낸 행과 열을 이용해서 reflexive, irreflexive, symmetric 관계를 알아내기

위한 조건문을 추가하여 yes/no 판별을 할 수 있도록 프로그래밍 하였음.

3/21

각자 역할분담을 정하였습니다.조용혁, 이민준 학생이 프로그래밍을 맡고 박구남, 김선형 학생이 자료조사를 맡았음. 문제 이해와 접근방법에 대해 토의 하였음. reflexive, symmetric, irreflexive 이 단어에 대한 이해도가 부족하여 첫날 과제에 접근하

는데 어려움을 겪었음. 하지만 두 번째 프로젝트라서 모두 서로 친해진 상태이었기에 적극

적으로 토의가 진행 되었음.

Page 8: 이산수학 D1 프로젝트 2

3/25

코딩한 초안(2X2인지 3X3인지 행과열을 출력하는 것까지 완성하였음)을 가지고 조원들과 함께 어떻게

하면(reflexive, symmetric, irreflexive)조건에 맞는 코딩을 할 것인지 토의를 하였고,

이번과제와 관련된 학습내용에서 reflexive, symmetric, irreflexive들의 정확한 정의를

조사해왔음. 조원들 모두 서로 조사한 내용을가지고 토의하면서 서로에게 설명을 해

주었고,초안을 가지고 reflexive, symmetric, irreflexive 조건에 맞게 프로그램 작성에

접근이 약간 힘들다고 함.

3/29

정사각행렬(2X2,3X3...)만 reflexive, symmetric, irreflexive조건에 만족할 수 밖에 없다고

생각하여 정사각행렬 중심으로 프로그램을 코딩하였음. 각자 조사해온 학습내용 안에

포함되어있는 단어들을 서로 부족한 점이 있으면 알려주고, 프로그래밍 코딩에 관한

전반적인 내용을 토의하였음.

과제 후

과제 준비에서 첫 번째 과제보다 단어들(reflexive, symmetric, irreflexive)을 이해하는데 시간이 오래 걸렸음. 또한 문자열을 입력 받는 함수를 처음 사용해봐서 사용하는데 어려웠음. 또한 프로그래밍이 가능한 인원이 적어서 프로그래밍이 가능한 인원에게 과제가 몰렸지만 서로 할 수 있는데까지 자료조사, 프로그래밍, 보고서 등 모두 적극적으로 참여하여 처음 문제를 접할 때 보다 이해가 쉬웠으며 조원들 모두 토의를 하면서 하나하나 가르쳐주면서 알아가니 점차 문제의 해결 방안이 무엇인지 접근이 전보다 용이 하였음.

Page 9: 이산수학 D1 프로젝트 2

소집단 활동 보고서

박구남

집단에 관하여

▷집단에 활동을 수행 하면서 그 절차에 대해 무엇을 배웠는가? 박구남 : 코딩 초안이 어떤식으로 이루어졌는지, 또 서로 토의하면서 역할분담을 하게되니 더 알기

쉽고 시간 절약이 된다는것을 배웠습니다.

▷팀 친구로부터 배운 아이디어나 관점들을 하나 이상 적으시오. 박구남 : gets함수를 사용하기위해 #include <stdlib.h> 헤더파일을 사용하였다고 배웠으며 정사각

행렬을 중심으로 하여야 reflexive,symmetric,irreflexive 의 Y/N가 명확하게 출력 할 수 있다는 것을 알게되었습니다.

▷보고서의 질을 높이기 위해 사용한 방법은 무엇인지 적으시오.

박구남 : 코딩 초안이 어떤식으로 이루어졌는지,무엇을 알기위하여 프로그래밍 하였는지, 초안, 최종안, 개개인의 소집단 활동 보고서를 종합하여 작성하였습니다.

개인에 대하여

▷주제를 친구가 쉽게 알 수 있도록 사용한 방법 두 가지만 적으시오. 박구남 : 입력 받았을 때 행과열을 출력하는 코딩에서 reflexive,symmetric,irreflexive를 어떻게

적용 할 것인지 토의하였고 소집단 활동 보고서 작성간 프로젝트간 어려웠던점 등을 작성 하라고 하였습니다.

▷팀 친구에게 가르쳐준 아이디어나 정보를 한 가지만 적으시오.

박구남 : symmetric에 관한 내용을 자세하게 아는대로 조원들에게 설명 해주었으며, 개별로 매 회의가 끝난후 소집단 활동 보고서를 작성하여 달라고 하였습니다.

▷친구로부터 배운 능력을 한 가지만 적고, 어떻게 배웠는지 적으시오.

박구남 : 조원들에게 반사,대칭,비반사에 대하여 자세한 설명을 들었으며 프로젝트 코딩의 전반적인 내용,함수 등 어떻게 하여 Y/N이 나오는지 설명을듣고 알게 되었습니다.

▷친구의 연구를 관찰, 질문하여 배운 아이디어를 한 가지만 적으시오.

박구남 : gets함수를 쓰는 방법을 알게 되었습니다.

Page 10: 이산수학 D1 프로젝트 2

소집단 활동 보고서

이민준

집단에 관하여

▷집단에 활동을 수행 하면서 그 절차에 대해 무엇을 배웠는가? 이민준 : 조원들과 역할을 나누어 과제를 하면 자신이 맡은 과제에 좀더 열중 할 수 있어

좋고,정보를 같이 공유하면서 공부하는것이 서로에게 도움이 된다는 것을 배웠습니다.

▷팀 친구로부터 배운 아이디어나 관점들을 하나 이상 적으시오. 이민준 : 옛 책이 지금 나오는 책들보다 좀 더 자세하게 설명이 되어있다는 정보를 들었으며,모든

경우의 수를 따지는 습관이 들면 좋다고 배웠습니다.

▷보고서의 질을 높이기 위해 사용한 방법은 무엇인지 적으시오.

이민준 : 과제를 하면서 참고했던 자료들을 구체적으로 제시하여 작성하였고, 저희 조가 코딩한 소스를 초안부터해서 마지막 최종안까지 프로그램이 어떻게 진행되는지 보기 쉽게 작성 해 놓았습니다.

개인에 대하여

▷주제를 친구가 쉽게 알 수 있도록 사용한 방법 두 가지만 적으시오. 이민준 : 대칭관계에 대해 조원이 조사한 자료와 제가 조사한 자료들을 비교하면서 무엇이

잘못되었는지 토의하였고, 인터넷(구글,네이버) 참고자료를 이용하였습니다. (http://kdi127.tistory.com/20)

▷팀 친구에게 가르쳐준 아이디어나 정보를 한 가지만 적으시오. 이민준 : 반사,비반사,관계에 대하여 인터넷(구글,네이버) 참고자료를 이용하였고, 이산치 수학에서

관계에 대하여 알아보았습니다.(http://byw.ords.tistory.com/91)

▷친구로부터 배운 능력을 한 가지만 적고, 어떻게 배웠는지 적으시오. 이민준 : 2차원 배열의 초기화 방법

int arr2[2][2]={{1,2},{3,4}};과 gets();함수 쓰는 방법을 배웟습니다.

while( gets(pstr) !=NULL){

printf("%s\n",pstr);break;

}

▷친구의 연구를 관찰, 질문하여 배운 아이디어를 한 가지만 적으시오. 이민준 : 반사,비반사 관계가 잘 이해가 되지 않았었는데 관계행렬로 나타내서 설명하니 쉽게 이해

할 수 있었습니다.

Page 11: 이산수학 D1 프로젝트 2

소집단 활동 보고서

조용혁

집단에 관하여

▷집단에 활동을 수행 하면서 그 절차에 대해 무엇을 배웠는가? 조용혁 : 각각 조원들이 해온 업무를 조원 전체가 서로 봐주며,잘못된 것은 수정해주고 그 잘못된

점을 발견하면 함께 원인을 찾아보고 해결방안을 모색하는 절차를 배웠습니다.

▷팀 친구로부터 배운 아이디어나 관점들을 하나 이상 적으시오. 조용혁 : 조원들로부터 맡은일을 잘 해오며 그것을 조원들에게 이해시키기 위해 관련 자료들을

잘정리하고, 다른조원들이 설명할 때 귀기울이며,모르는것이나 자기가 조사한 것이랑 다른것이있으면 적극적으로 질문하는 자세를 배웠습니다.

▷보고서의 질을 높이기 위해 사용한 방법은 무엇인지 적으시오. 조용혁 : 보고서의 질을 높이기 위하여 보고서에 저희가 한 업무 분담과 한 일들을 상세하게

기록하였고, 보고서를 쓰기전 조원들과 다시 한번 오늘 회의 때 있엇던 일들을 돌이켜 보는 시간을 가졌습니다.

개인에 대하여

▷주제를 친구가 쉽게 알 수 있도록 사용한 방법 두 가지만 적으시오. 조용혁 : 조원들에게 예를 들어 설명하고 어려운 말을 최대한 알아듣기 쉽게 풀어서 말하였으며,

도표나 그래프를 이용하여 설명 하였습니다.

▷팀 친구에게 가르쳐준 아이디어나 정보를 한 가지만 적으시오. 조용혁 : 조원들에게 reflexive,symmetric,irreflexive의 정의와 equivalence relations,equivalence

class의 정의를 설명 해 주었습니다.

▷친구로부터 배운 능력을 한 가지만 적고, 어떻게 배웠는지 적으시오. 조용혁 : reflexive,symmetric,irreflexive를 소스코드로 어떻게 나타낼 수 있는지와 서로 자료공유

시간을 가질 때 partial ordering을 배웠습니다.

▷친구의 연구를 관찰, 질문하여 배운 아이디어를 한 가지만 적으시오. 조용혁 : 행렬을 소스코드로 나타내는 방법과 정사각행렬만 반사성 대칭성 이행성이 만족한다는

사실을 알게 되었습니다.

Page 12: 이산수학 D1 프로젝트 2

소집단 활동 보고서

김선형

집단에 관하여

▷집단에 활동을 수행 하면서 그 절차에 대해 무엇을 배웠는가? 김선형 : 이 때 까지 주로 개인적인 수행 활동을 하였는데 여러 조원들과 함께 과제를 수행하니

서로 일을 하는 방식도 다르고 의견 차이를 보였습니다. 서로의 생각과 아이디어를 공유 할 수 있는 방법을 배울수 있었습니다.

▷팀 친구로부터 배운 아이디어나 관점들을 하나 이상 적으시오. 김선형 : 프로그램이 실행되는 과정과, 어떤방향으로 문제에 접근해야하는지를 배웠습니다.

▷보고서의 질을 높이기 위해 사용한 방법은 무엇인지 적으시오. 김선형 : 온,오프라인을 통하여 수시로 조원들과 함께 서로의 의견을 주고 받으며 정보 교환을

하였습니다.

개인에 대하여

▷주제를 친구가 쉽게 알 수 있도록 사용한 방법 두 가지만 적으시오. 김선형 : 조원들에게 행렬을 직접 그려가며 어떤관계가 있는지 관계에 대하여 설명을 하였습니다.

▷팀 친구에게 가르쳐준 아이디어나 정보를 한 가지만 적으시오. 김선형 : 조사를 맡은 reflexive,symmetric,irreflexive의 정의를 자세하게 설명 해 주었습니다.

▷친구로부터 배운 능력을 한 가지만 적고, 어떻게 배웠는지 적으시오. 김선형 : 프로그램이 실행되는 전반적인 과정을 배웠습니다.