성공습관지수 검사 프로그램 만들기 > C언어

본문 바로가기

C언어

C언어

4. 성공습관지수 검사 프로그램 만들기

페이지 정보

작성자 관리자 댓글 0건 조회 2,602회 작성일 22-11-28 21:38

본문

4. 성공습관지수 검사 프로그램 만들기

1. 분석


문항관리에서 문항을 입력하여 파일 저장하였습니다.

성공습관지수 검새 프로그램에서는 저장한 파일에서 문항을 불러와 검사 프로그램을 만들어 봅니다.


2. 소스코딩

프로젝트 명 : buja_test


1단계) 파일에서 문항 불러와 배열에 저장하기


#include <stdio.h>


char test_list[16][200]={};  // 문항을 저장할 전역변수 


void load_list() {

FILE *fp;

int i, j;

char ch;

fp = fopen("c:\\temp\\test_list.txt", "r");

i = 0;

j = 0;

while(1) {

ch = fgetc(fp);


if(ch == '\n') {  // 문장의 끝일  

test_list[i][j] = '\0';

i++;

j = 0;


} else if(ch == EOF) {  // 파일의 끝일 때  

test_list[i][j] = '\0';

break;

}  else {

test_list[i][j] = ch;

j++;

}


}

fclose(fp);

}


int main(int argc, char *argv[]) {

int num, i, j;

 

// test_list[16][200] 배열에 문항을 파일에서 불러온다.  

load_list();

// 불러온 문항을 이용하여 검사프로그램을 만든다. 

for(i = 0; i< 16; i++) {

printf("%d. %s\n", i+1, test_list[i]);

}  


return 0; 

}


실행하여 결과를 확인합니다.


2단계) 응답 선택 문항을 출력합니다.


#include <stdio.h>


char test_list[16][200]={};  // 문항을 저장할 전역변수 


void load_list() {

FILE *fp;

int i, j;

char ch;

fp = fopen("c:\\temp\\test_list.txt", "r");

i = 0;

j = 0;

while(1) {

ch = fgetc(fp);


if(ch == '\n') {  // 문장의 끝일  

test_list[i][j] = '\0';

i++;

j = 0;


} else if(ch == EOF) {  // 파일의 끝일 때  

test_list[i][j] = '\0';

break;

}  else {

test_list[i][j] = ch;

j++;

}


}

fclose(fp);

}


int main(int argc, char *argv[]) {

int num, i, j;


char a[5][100]={

"(1) 매우 그렇다"

,"(2) 대체로 그렇다"

,"(3) 보통이다"

,"(4) 별로 그렇지 않다"

,"(5) 전혀 그렇지 않다"

};


// test_list[16][200] 배열에 문항을 파일에서 불러온다. 

load_list();

// 불러온 문항을 이용하여 검사프로그램을 만든다. 

for(i = 0; i< 16; i++) {

printf("%d. %s\n", i+1, test_list[i]);

for(j = 0; j< 5; j++) {

printf("\t%s\n", a[j]);

}


}


return 0;

}


실행하여 답변을 위한 선택 문항이 출력되는 지 확인한다.


3단계) 각 문항에 대해 답변을 입력하여 저장하고 입력한 답변을 출력한다.


#include <stdio.h>


char test_list[16][200]={};  // 문항을 저장할 전역변수 


void load_list() {

FILE *fp;

int i, j;

char ch;

fp = fopen("c:\\temp\\test_list.txt", "r");

i = 0;

j = 0;

while(1) {

ch = fgetc(fp);


if(ch == '\n') {  // 문장의 끝일  

test_list[i][j] = '\0';

i++;

j = 0;


} else if(ch == EOF) {  // 파일의 끝일 때  

test_list[i][j] = '\0';

break;

}  else {

test_list[i][j] = ch;

j++;

}


}

fclose(fp);

}


int main(int argc, char *argv[]) {

int num, i, j;

int ans[16] = {};  // 답변을 저장할 배열 변수 

char a[5][100]={

"(1) 매우 그렇다"

,"(2) 대체로 그렇다"

,"(3) 보통이다"

,"(4) 별로 그렇지 않다"

,"(5) 전혀 그렇지 않다"

};


// test_list[16][200] 배열에 문항을 파일에서 불러온다. 

load_list();

// 불러온 문항을 이용하여 검사프로그램을 만든다. 

for(i = 0; i< 16; i++) {

printf("%d. %s\n", i+1, test_list[i]);

for(j = 0; j< 5; j++) {

printf("\t%s\n", a[j]);

}

printf("선택 (1~5) ? ");

scanf("%d", &ans[i]);

}

printf("\n========================================\n");

for(i=0; i<16; i++) {

printf("%d   ", ans[i]);

}

printf("\n========================================\n");


return 0;

}



3. 실행 


반복적으로 실행하면서 오류와 보완해야할 점을 찾아서 수정합니다.

1. 하루 30분이상 책을 읽는다

        (1) 매우 그렇다

        (2) 대체로 그렇다

        (3) 보통이다

        (4) 별로 그렇지 않다

        (5) 전혀 그렇지 않다

선택 (1~5) ? 1

2. 책 읽는 것을 좋아한다

        (1) 매우 그렇다

        (2) 대체로 그렇다

        (3) 보통이다

        (4) 별로 그렇지 않다

        (5) 전혀 그렇지 않다

선택 (1~5) ? 1


................... 생략 ..................


15. 한 달에 10시간 이상 봉사활동을 한다

        (1) 매우 그렇다

        (2) 대체로 그렇다

        (3) 보통이다

        (4) 별로 그렇지 않다

        (5) 전혀 그렇지 않다

선택 (1~5) ? 1

16. 매달 2권 이상의 비문학 서적을 읽는다

        (1) 매우 그렇다

        (2) 대체로 그렇다

        (3) 보통이다

        (4) 별로 그렇지 않다

        (5) 전혀 그렇지 않다

선택 (1~5) ? 1


========================================

1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1

========================================



4. 과제 : 검사프로그램 수정하기


과제1) 입력한 답변의 합계를 구하여 출력한다.


int tot = 0;

tot = tot + ans[i];

printf("함계 = %d\n", tot);


위의 코드를 참고하여 완성합니다.

입력한 값이 "1)매우그렇다"이면 5점을 더하고, "5)전혀 그렇지 않다"이면 1점을 더하여 합계를 구합니다.


과제2) 합계점수를 환산점수로 바꾸어 줍니다.


float score = 0;

score = 환산공식 :

printf("점수 = %d\n", score);


각문항당 배점을 구하는 방식으로 공식을 찾아봅니다.

모든 문항을 1을 선택하면 5점을 합하기 때문에 80점이고,

5을 선택하면 1점이 16문항이므로 16점입니다.

따라서 16점에서 80점의 합계가 나옵니다. 

이점수를 0점에서 100점 범위로 환산해줍니다.





Copyright © LEELAB.CO.KR. All rights reserved.