ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 투자노트 금융공학 퀀트 프로그래밍 3주차 과제
    금융공학 퀀트 프로그래밍 과정 2020. 4. 5. 14:20

    # 제출안내

     1. 방법 : 본인 블로그에 작성 후 본 게시판에 링크를 업로드

               또는 본 게시판에 작성. 제목은 '투자노트 금융공학 퀀트 프로그래밍 과정 x주차과제' 등으로 작성 

               (본 게시판에 작성한 내용은 주기적으로 삭제 및 정리되오니 강의 내용을 가지고

                  있으시려면 본인 블로그에 작성하시오)

     2. : 최종과제 스크린샷 1장 이상 첨부. 스크린샷을 반드시 첨부하시오.

     3. 기한 : 매주 일요일 오후 12시 전까지

     

     

    # 준비

     지난 1주차 과정에서, c를 편집할 수 있는 프로젝트를 생성한 후

     다음 기본 코드로부터 시작하여 아래 문제들을 해결하시오.

      int main()

     { return 0; }

     

     

    # 기본과제 및 제출 양식

     1. 전처리문이 무엇인지 조사하고 다음 전처리문의 용도와 사용 예시를 적으시오. (0.5시간 소요)

    전처리문이란 소스코드를 실행하는 빌드의 과정 중에서 우선적으로 특별한 명령을 미리 처리하는 명령문이다.

     

    . #include

    헤더 파일 또는 임의의 파일을 포함 시킬 때 사용하는 전처리문이다. 소스코드에서 사용하는 함수를 호출하기 위해 헤더파일 선언문이 삽입되어야 한다. 예를 들어 printf 함수를 사용하기 위해서는 키보드와 모니터의 입력과 출력을 제어하는 <stdio.h>라는 헤더파일을 선언해야 한다.

    사용법 : #include <파일 이름>, #include "파일 이름"

     

    . #define

    상수, 함수, 문자열 등을 특정 문자로 정의할 때 사용하는 전처리문이다. 소스코드에서 PI와 같이 복잡한 상수를 사용할 일이 있을 때 전처리문에서 #define PI 3.141592를 선언해준 후에 소스코드에서는 간편하게 PI3.141592를 대신하여 사용할 수 있다.

    사용법 : #define 매크로 치환될 상수나 함수

     

    . #pragma

    컴파일러에게 명령을 하기 위해 사용하는 전처리문이다. #pragma message("")와 같이 컴파일러에게 메시지를 남겨 줄 때, #pragma one와 같이 헤더 파일 중복을 방지할 때, #pragma warning와 같이 컴파일 중 특정한 경고문을 무시할 때, #pragma comment와 같이 프로젝트에 라이브러리를 추가해 줄 때 등 사용할 수 있다.

    사용법 : #pragma one, ...

     

     2. 다음 값을 define 해보시오. (1.5시간 소요)

      . Log20.3010 으로 define 하시오. 첫글자를 대문자로 하시오. #define Log2 0.3010

      . Log30.4771 으로 define 하시오. 첫글자를 대문자로 하시오. #define Log3 0.4771

      . Log70.8451 으로 define 하시오. 첫글자를 대문자로 하시오. #define Log7 0.8451

      ~다를 이용하여 log2 ~ log10의 값을 구하는 코드를 작성해 보시오

         그리고 log2~log10 까지의 값을 printf  출력하시오.  

         제법은 https://namu.wiki/w/%EC%83%81%EC%9A%A9%EB%A1%9C%EA%B7%B8#fn-7 에 있는 [7]번 항목을 참조하시오. 작성한 코드도 업로드하시오

      int main()

     {

       double log2 = Log2;

       double log3 = Log3;

       double log4 = Log2 * 2;  // 힌트 : 4=2*2

       double log5 = 1 - Log3;  // 힌트 : 5=10/2

       double log6 = Log2 + Log3;  // 힌트 : 6=2*3

       double log7 = Log7;

       double log8 = Log2 * 3;  // 힌트 : 8=2*2*2

       double log9 = Log3 *2   // 힌트 : 9=3*3

       double log10 = Log2 + log5 // 힌트 : 10=2*5

     

    printf("log2=%lf\n", log2);

    printf("log3=%lf\n", log3);

    printf("log4=%lf\n", log4);

    printf("log5=%lf\n", log5);

    printf("log6=%lf\n", log6);

    printf("log7=%lf\n", log7);

    printf("log8=%lf\n", log8);

    printf("log9=%lf\n", log9);

    printf("log10=%lf\n", log10);

      return 0;

      }

     

      . PI값을 3.141592define 한 후 반지름을 입력받아 원의 넓이, 둘레를 출력하는 프로그램을 작성하시오http://tujanote.cafe24.com/bbs/board.php?bo_table=pds2&wr_id=52&sca=C&page=2 을 참조하시오.

     

    #include <stdio.h>

    #define PI 3.141592

     

    int main(){

     

    double r, s, l;

     

    printf("반지름을 입력하시오 : ");

    scanf("%lf", &r);

     

    s = r * r * PI;

    l = 2 * r * PI;

     

    printf("넓이 : %lf\n", s);

    printf("둘레 : %lf", l);

     

     

     

    return 0;

    }

     

    3. 아스키 코드에 대해 조사하시오 (2시간 소요)

      . 아스키코드 표를 구하여 0~127까지의 대응값을 구하고 스크린샷을 첨부하시오.

     

      . char 형 변수를 선언한 후, 65를 주시오. 이 변수를 출력하면 A가 나옴을 확인하시오. char 형 변수를 선언한 후, 97를 주시오. 이 변수를 출력하면 a가 나옴을 확인하시오. 작성한 코드도 업로드하시오http://tujanote.cafe24.com/bbs/board.php?bo_table=pds2&wr_id=53&sca=C&page=2 를 참조하시오.

     

    int main(){

    char code1 = 65;

    char code2 = 97;

     

    printf("code1 = %c\n", code1);

    printf("code2 = %c", code2);

     

    return 0;

    }

     

     

      . char 형 변수를 투자노트 ID의 글자수만큼 만들고, 각 변수에 아스키값을 준 후 자신의 ID를 출력하는 프로그램을 만드시오. 작성한 코드도 업로드하시오.

     

    int main(){

    char id1 = 107;

    char id2 = 103;

    char id3 = 116;

    char id4 = 50;

    char id5 = 48;

    char id6 = 49;

    char id7 = 48;

     

    printf("ID : %c%c%c%c%c%c%c", id1,id2,id3,id4,id5,id6,id7); //  ID : kgt2010

     

    return 0;

    }

     

      . 프로그램을 실행하면 비프음이 나오도록 아스키값을 준 후 실행을 확인하시오작성한 코드도 업로드하시오.

     

    int main(){

    char bp = 7;

     

    printf("비프음%c", bp);

    return 0;

    }

     

     

     

    # 심화과제 제출 양식( 안해도 됨 )

    1. 대소문자 변환 프로그램을 만드시오.

      . char형 변수를 선언한 후 소문자를 입력받으시오. 입력받은 소문자를 대문자로 바꾸어 주는 프로그램을 구현하시오. 작성한 코드도 업로드하시오.

     

    int main(){

    char code1, code2;

     

    printf("소문자 입력 : ");

    scanf("%c", &code1);

     

     

     

    code2 = code1 - 32;

    printf("대문자 변환 : %c", code2);

     

    return 0;

    }

     

     

     

      . char형 변수를 선언한 후 대문자를 입력받으시오. 입력받은 대문자를 소문자로 바꾸어 주는 프로그램을 구현하시오. 작성한 코드도 업로드하시오

     

    int main(){

    char code3, code4;

     

    printf("대문자 입력 : ");

    scanf("%c", &code3);

     

    code4 = code3 + 32;

     

    printf("소문자 변환 : %c", code4);

     

    return 0;

    }

     

    2. 시간 카운터를 만드시오.

      . 1분이 60초임을 define하시오. 이름은 SEC_PER_MIN 으로 하시오. #define SEC_PER_MIN 60

      . 1시간이 60분임을 define하시오. 이름은 MIN_PER_HOUR로 하시오. #define MIN_PER_HOUR 60

      . 하루가 24시간임을 define 하시오. 이름은 HOUR_PER_DAY으로 하시오. #define HOUR_PER_DAY 24

      . '%'연산자에 대해 조사하고, 용도와 예문을 1줄로 적어보시오.

    용도 : 왼쪽의 피연산자의 값을 오른쪽의 피연산자 값으로 나눴을 때 얻게 되는 나머지를 반환한다.

    예문 : num = 7 % 3; // 1을 반환한다.

      . 몇일,몇시간,몇분,몇초인지를 입력하면 총 몇 초인지 계산하는 프로그램을 만드시오. 작성한 코드도 업로드하시오.

     

     

    #include <stdio.h>

    #pragma warning (disable:4996)

    #define SEC_PER_MIN 60

    #define MIN_PER_HOUR 60

    #define HOUR_PER_DAY 24

     

    int main(){

    int day=0, hour=0, min=0, sec=0, output;

     

    printf("(day) 입력 : ");

    scanf("%d", &day);

     

    printf("시간(hour) 입력 : ");

    scanf("%d", &hour);

     

    printf("(min) 입력 : ");

    scanf("%d", &min);

     

    printf("(sec) 입력 : ");

    scanf("%d", &sec);

     

    output = sec + SEC_PER_MIN * (min + MIN_PER_HOUR * (hour + HOUR_PER_DAY * day));

     

    printf("%d%d시간 %d%d초는 %d초입니다.", day, hour, min, sec, output);

     

     

     

     

    return 0;

    }

     

      . 0~1000000의 범위에서 ''를 입력하면 몇일,몇시간,몇분,몇초인지 계산하는 프로그램을 만드시오. 작성한 코드도 업로드하시오http://tujanote.cafe24.com/bbs/board.php?bo_table=pds2&wr_id=54&sca=C&page=2 를 참조하시오.

     

    #include <stdio.h>

    #pragma warning (disable:4996)

    #define SEC_PER_MIN 60

    #define MIN_PER_HOUR 60

    #define HOUR_PER_DAY 24

     

     

    int main(){

    int day=0, hour=0, min=0, sec=0, input=0;

     

    printf("(sec) 입력(범위 0~1000000) : ");

    scanf("%d", &input);

     

    day = input / HOUR_PER_DAY / MIN_PER_HOUR / SEC_PER_MIN;

    hour = (input - day * HOUR_PER_DAY * MIN_PER_HOUR * SEC_PER_MIN) / MIN_PER_HOUR / SEC_PER_MIN;

    min = (input - day * HOUR_PER_DAY * MIN_PER_HOUR * SEC_PER_MIN - hour * MIN_PER_HOUR * SEC_PER_MIN) / SEC_PER_MIN;

    sec = input % SEC_PER_MIN;

     

    printf("%d초는 %d%d시간 %d%d초 입니다.", input, day, hour, min, sec);

     

     

     

     

    return 0;

    }

     

     

Designed by Tistory.