반응형

     정보

    • 업무명     : C++ 프로그래밍 과제물

    • 작성자     : 이상호

    • 작성일     : 2019-12-13

    • 설   명      :

    • 수정이력 :

     

     내용

    [개요]

    • 안녕하세요? 웹 개발 및 연구 개발을 담당하고 있는 해솔입니다.

    • 오늘 포스팅은 C++ 프로그래밍 과제물을 소개드리고자 합니다.

     

     

    [특징]

    • C++ 프로그래밍 과제물에 대한 이해를 돕기위해 작성

     

    [기능]

    • 과제물 지시사항

    • 과제물 작성요령

     

    [활용자료]

    • 인터넷 검색

     

    [과제물 작성 요령]

    • 과제물 작성 계획 세우기

      • 과제물 작성을 위하여 계획 및 준비, 글쓰기, 제출과 같이 3 단계로 구성

      • 1 단계는 우선 계획 및 준비로서 공고 확인, 제출 기간 확인, 과제물 문제를 파악

      • 2단계의 경우 글쓰기로서 자료 검색 수집 및 개요 작성 그리고 본문 쓰기 및 수정

      • 끝으로 제출 마감일뿐만 아니라 파일 용량 검사 및 온라인시스템 제출

    • 과제물 문제 파악 요령

      • 과제물 문제에서 교수님의 지시사항을 정확히 간파하여 작성

      • 특히 제출 파일의 양식/용량 및 스타일 형식 그리고 작성 분량에 유의

    • 나만의 글쓰기 전략

      • 앞서 작성 계획에서와 같이 단계별로 수행이 필연

      • 추가로 각 과제물마다 한글 또는 워드 양식에서 각자만의 스타일을 바탕으로 글의 내용 작성

      • 또한 각종 인터넷 검색 및 도서를 참조하여 내용을 제시할 뿐만 아니라 그에 따른 판단의 근거에 대한 명확한 인용 및 출처가 정확하게 표시

    • 학술 검색을 위한 유용한 방법

      • 인터넷은 1950대에 컴퓨터의 개발과 더불어 너무 많은 정보의 바다에서 살고 있기 때문에 자신에게 필요한 정보 발굴 능력 요구 

      • 인터넷 검색이 익숙하지 않을 경우 네이버 검색을 추천하고 익숙하면 구글 검색이 유용

      • 그러나 일반적으로 네이버 또는 구글로 검색할 경우 다수의 블로그에서 중복되는 정보를 확인할 수 있고 이러한 정보들은 대부분 복사 붙여넣기로 인해 남용되고 있는 실정

      • 따라서 이 보다는 전 세계 검색엔진 2위를 차지한 Yahoo! JAPAN (https://www.yahoo.co.jp)에서 검색하여 구글 번역할 경우 원하는 정보를 쉽게 얻음

      • 연구 보고서 또는 SCI/SCIE 논문을 보기 위해서 대학교에서 저널을 구독하는 것이 일반적이나 모든 저널을 구독하기에는 상당한 경제적 부담이 되기 때문에 SCI-HUB (https://sci-hub.tw/)를 통해 보는 것을 추천 

     

    [사용법]

    • 과제물 서식을 바탕으로 작성

     

    [사용 OS]

    • Windows 10

     

    [사용 언어]

    • C++

    • 한글 v2018

     

     과제물 문제

     

     소스 코드

    [명세]

    // SurveyCheck.h
    #ifndef _SurveyCheck_H_
    #define _SurveyCheck_H_
    
    class SurveyCheck {
        
        // 설문 내용
        char* ask;
    
        // 보기 개수
        int qty;
    
        // 보기 내용들
        char** example;
    
        // 각 보기에 대한 답변의 개수
        int* answer;
    
    public:
        
        // 선택 항목 및 설문 문항을 0으로 초기화
        void fnClose() {
            for (int iCount = 0; iCount < qty; iCount++) {
                delete[] example[iCount];
            }
             
            delete[] example;
            delete[] answer;
        }
    
        void fnSetAsk(char* str) {
            int len = strlen(str) + 1;
    
            ask = new char[len];
            strcpy(ask, str);
        }
    
        // 선택 항목의 개수를 지정
        void fnSetQty(int iNumber) {
    		qty = iNumber;
            answer = new int[qty];
            example = new char*[qty];
        }
    
        // 선택 항목을 등록
        void fnSetExample(char* str, int iNumber) {
    
            // 설정된 개수 내에서 허용
            if (iNumber < qty) {
                example[iNumber] = new char[strlen(str) + 1];
                strcpy(example[iNumber], str);
            }
        }
    
        // 설문 문항 (질문과 선택 항목)을 출력
        char* fnGetAsk() {
            return ask;
        }
    
        char* fnGetExample(int iNumber) {
            
            // 설정된 개수 내에서 허용
            if (iNumber < qty) {
                return example[iNumber];
            }
    
            // 설정된 개수 범위를 넘을 경우
            return NULL;
        }
    
        // 설문 문항을 출력 후 응답 (선택항목의 번호)을 입력
        void fnSetAnswer(int iNumber) {
    
            if (iNumber < qty) {
                answer[iNumber]++;
            }
        }
    
        // 설문 응답 결과를 출력
        int fnGetAnswer(int iNumber) {
    
            // 설정된 개수 내에서 허용
            if (iNumber < qty) {
                return answer[iNumber];
            }
    
            return 0;
        }
    
        // 설문 조사를 재시작하기 위해서 응답 수를 0으로 초기화
        void fnResetAnswer() {
            for (int iCount = 0; iCount < qty; iCount++) {
                answer[iCount] = 0;
            }
        }
    };
    
    #endif
    
    // SurveyCheck.cpp
    // cin, cout
    #include <iostream>
    
    // strlen, strcpy
    #include <cstring>
    
    // atoi, isdigit
    #include <cstdlib>
    
    #include "SurveyCheck.h"
    
    using namespace std;
    
    int main() {
    
        // 보기 개수, 보기 선택, 반복
        int qty, sel, iCount;
    
        // 다시 설문조사를 할 것인가 여부
        char again;
    
        // 문자열 입력용
        char str[200] = "\0";
    
    
        // 객체 생성
        SurveyCheck clSurveyCheck;
    
        cout << "등록할 설문 문항을 입력하시오 : ";
        
        // 공백 문자를 포함하여 199 글자까지
        cin.getline(str, sizeof(str) - 1);
    
        clSurveyCheck.fnSetAsk(str);
    
        cout << endl;
    
        if (strlen(str) > 0) {
            cout << "선택할 답항의 수를 입력하시오 : ";
    
            do {
                // 보기의 개수를 문자열로 받아들임
                cin >> str;
    
                // 문자열을 숫자로 변환
                qty = atoi(str);
    
            // 보기는 1개 이상
            } while (qty < 1);
    
            // 선택 항목 수 입력
            clSurveyCheck.fnSetQty(qty);
    
            cout << endl;
            
            // 입력 버퍼 비움
            cin.ignore(sizeof(str), '\n');
    
            // 등록할 수 있는 선택 항목의 수는 2에서 지정한 것 이내
            for (int iCount = 0; iCount < qty; iCount++) {
               cout << "답항" << iCount + 1 << " : ";
    
               cin.getline(str, sizeof(str) - 1);
    
                // 선택 항목 등록
               clSurveyCheck.fnSetExample(str, iCount);
            }
    
            do {
                clSurveyCheck.fnResetAnswer();
    
                cout << endl << "설문 조사를 시작합니다." << endl;
                cout << endl;
                system("pause");
    
                for (int iCount = 0; ; iCount++) {
                    system("cls");
    
                    cout << clSurveyCheck.fnGetAsk() << endl << endl;
    
                    for (int jCount = 0; jCount < qty; jCount++) {
                        cout << "[" << jCount + 1 << "] " << clSurveyCheck.fnGetExample(jCount) << endl;
                    }
    
                    do {
                        cout << endl << "번호를 입력하시오(0은 설문 종료) : ";
                        cin >> str;
    
                    } while (!isdigit(str[0]));
    
                    sel = atoi(str);
    
    				// 설문 종료
                    if (sel == 0) {
                        
    					break;
                    }
    
                    if (sel > qty || sel < 1) {
                        cout << "올바른 범위의 번호를 선택하세요." << endl;
    
                        system("pause");
    
                        iCount--;
    
                        continue;
                    }
    
                    // 선택 1이 배열의 0
                    clSurveyCheck.fnSetAnswer(--sel);
                }
    
                system("cls");
                cout << "질문 : " << clSurveyCheck.fnGetAsk() << endl << endl;
                cout << "조사 결과" << endl << endl;
    
                for (int iCount = 0; iCount < qty; iCount++) {
                    cout << "[" << iCount + 1 << "] " << clSurveyCheck.fnGetExample(iCount) << " --> " << clSurveyCheck.fnGetAnswer(iCount) << endl;
                }
    
                cout << endl << "설문조사를 다시 할까요? (프로그램 종료 : 'n' 입력) ";
    
                do {
                    cin >> again;
                } while (again == '\0');
            } while (again != 'n' && again != 'N');
        } else {
            cout << "설문 조사가 취소되었습니다." << endl;
            system("pause");
    
            return 0;
        }
    	
    	clSurveyCheck.fnClose();
    	
    	return 0;
    }

     

    [GitHub Gist]

    • SurveyCheck.h

     

    • SurveyCheck.cpp

     

     관련 자료

    [제출본]

     

     참고 문헌

    [논문]

    • 없음

    [보고서]

    • 없음

    [URL]

    • 없음

     

     문의사항

    [기상학/프로그래밍 언어]

    • sangho.lee.1990@gmail.com

    [해양학/천문학/빅데이터]

    • saimang0804@gmail.com
    반응형
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기