C언어

본문 바로가기
사이트 내 전체검색


C언어
C언어

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

페이지 정보

작성자 관리자 댓글 0건 조회 364회 작성일 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점 범위로 환산해줍니다.




댓글목록

등록된 댓글이 없습니다.


개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.