-
투자노트 금융공학 퀀트 프로그래밍 과정 4주차 과제금융공학 퀀트 프로그래밍 과정 2020. 4. 12. 15:02
# 제출안내
1. 방법 : 본인 블로그에 작성 후 본 게시판에 링크를 업로드
또는 본 게시판에 작성. 제목은 '투자노트 금융공학 퀀트 프로그래밍 과정 x주차과제' 등으로 작성
(※ 본 게시판에 작성한 내용은 주기적으로 삭제 및 정리되오니 강의 내용을 가지고
있으시려면 본인 블로그에 작성하시오)
2. 양 : 최종과제 스크린샷 1장 이상 첨부. 스크린샷을 반드시 첨부하시오.
3. 기한 : 매주 일요일 오후 12시 전까지
# 준비
지난 1주차 과정에서, c를 편집할 수 있는 프로젝트를 생성한 후
다음 기본 코드로부터 시작하여 아래 문제들을 해결하시오.
int main()
{ return 0; }
# 기본과제 및 제출 양식
1. 증감연산자가 무엇인지 찾아보고 x의 초기값이 1일때의 사용 예시를 적고 결과값을 printf해 보시오. (0.5시간 소요)
증감 연산자는 변수에 저장된 값을 1 증가 및 감소시키는 경우에 사용되는 연산자다. ++ 또는 — 부호가 변수의 앞에 있는 경우, 선 증가(감소), 후 연산을 하고 부호가 변수 뒤에 있는 경우 선 연산, 후 증가(감소)를 한다.
가. x++ : 속한 문장을 먼저 진행한 후, 값을 1 증가 시킨다.
int num = 1;
printf("num++ : %d\n", num++); // 1을 출력
printf("num : %d", num); // 2를 출력
나. x-- : 속한 문장을 먼저 진행한 후, 값을 1 감소 시킨다.
int num = 1;
printf("num-- : %d\n", num--); // 1을 출력
printf("num : %d", num); // 0을 출력
2. 자동형변환(올림변환, 내림변환)에 대해 조사하고 아래 문항을 해결하시오(1시간 소요)
가. 자동형변환(올림변환, 내림변환) 에 대해 50자 이내로 요약하여 설명해보시오.
대입 연산자의 왼편과 오른편에 존재하는 두 피연산자의 자료형이 일치하지 않으면, 왼편에 있는 피연산자를 대상으로 형 변환이 자동으로 일어난다. 이 때 데이터의 표현범위가 보다 넓은 자료형으로의 형 변환을 올림변환, 좁은 자료형으로의 형 변환은 내림변환이라 한다.
나. double a = 10, double b=3 일때 a/b=3.333... 이지만, int c = a/b처럼 짜면 어떤 값이 나오는지 printf 로 확인하고 그 이유를 설명하시오.
double a = 10, b = 3;
int c = a / b;
printf("c : %d\n", c); // 3을 출력
실수형 데이터를 정수형 데이터로 변환하는 과정에서 ‘소수부분의 손실’이 발생하기 때문이다. 올림변환의 경우 데이터의 손실이 발생하지 않으나, 내림변환의 경우 데이터의 손실이 발생할 수 있다.
다. int a = 10, int b=3일때 a/b=3 이지만, 캐스팅 연산자 (double)를 사용하여 (double)a/ (double)b 처럼 계산 후 이것을 double x에 대입한 후 값을 확인하면 3.333.... 이 정상적으로 나옴을 확인하시오. 그리고 이유를 설명하시오.
int a = 10, b = 3;
double x;
x = (double) a / (double) b;
printf("x : %lf\n", x); //3.333333 출력
내림변환과 달리 올림변환의 경우 데이터의 손실 없이 형 변환이 일어난다. 정수 10과 3을 각각 10.0과 3.0과 같이 실수형으로 변환하여 실수의 연산을 수행할 수 있게 한다.
라. 임의의 유리수를 입력받아 소수점자리에서 올림, 버림 하여 정수부분만 뽑아주는 프로그램을 구현하시오.
double num;
int a;
printf("유리수 입력 : ");
scanf("%lf", &num);
a = num;
printf("정수 부분 : %d", a);
마. '라'를 이용하여 임의의 유리수의 소수부분을 뽑아주는 프로그램을 구현하시오.
double fl;
fl = num - a;
printf("소수 부분 : %lf", fl);
바. math.h를 include 한 뒤 '라,마'를 이용하여 임의의 유리수의 log값을 알 때 그 숫자를 소수넷째짜리까지 찾아주는 프로그램을 만드시오.
double log;
printf("로그값 입력 :");
scanf("%lf", &log);
double r = pow(10, log);
printf("진수 : %.4lf.", r);
return 0;
3. 구구단 2~9단을 출력해보시오. 단, 반복문을 사용하지 마시오 (3시간 소요)
가. int a=2, int b=1로 시작하시오.
나. a * b = c라고 출력해보시오.
다. b++를 하여 b를 2로 만드시오.
라. a * b = c라고 출력해보시오.
마. b++를 하여 b를 3로 만드시오.
바. a * b = c라고 출력해보시오.
사. b++를 하여 b를 4로 만드시오.
아. a * b = c라고 출력해보시오.
자. 나~아의 방식으로 b가 9일때까지 출력해보시오
차. 자 항이 끝나면 a++를 하여 a=3으로 만드시오. b=1을 주어 초기화하시오.
카. 다시 나~아의 방식으로 b가 9일때까지 출력해보시오.
타. 가~카의 방식으로 a가 9일때까지 출력해보시오.
int a = 2, b = 1;
int c = a * b;
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
a++;
b = 1;
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
a++;
b = 1;
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
a++;
b = 1;
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
a++;
b = 1;
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
a++;
b = 1;
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
a++;
b = 1;
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
a++;
b = 1;
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
printf("%d * %d = %d\n", a, b++, c = a * b);
# 심화과제 제출 양식( 안해도 됨 )
1. 다음 증감연산자의 역할과 차이를 설명하고 이를 printf로 보이시오. http://tujanote.cafe24.com/bbs/board.php?bo_table=pds2&wr_id=55&sca=C&page=2 을 참조하시오.
++ 연산자는 변수에 저장된 값을 1 증가시키는 경우에 사용되는 연산자다. ++부호가 변수의 앞에 있는 경우, 선 증가, 후 연산을 하고 부호가 변수 뒤에 있는 경우 선 연산, 후 증가를 한다.
가. x++ : x++ 하기 전 x값, 후의 x값 비교하여 printf
int num = 10;
printf("num : %d\n", num); // 10 출력
printf("num++ : %d\n", num++); // 10 출력 (속한 문장을 먼저 진행한 후, 값을 1 증가)
printf("num : %d\n\n", num); // 11 출력
나. ++x : ++x 하기 전 x값, 후의 x값 비교하여 printf
int num2=10;
printf("num2 : %d\n", num2); // 10 출력
printf("++num2 : %d\n", ++num2); // 11 출력 (값을 1 증가 후, 속한 문장의 나머지를 진행)
printf("num2 : %d\n\n", num2); // 10 출력
-- 연산자는 변수에 저장된 값을 1 감소시키는 경우에 사용되는 연산자다. --부호가 변수의 앞에 있는 경우, 선 감소, 후 연산을 하고 부호가 변수 뒤에 있는 경우 선 연산, 후 감소를 한다.
다. x-- : x-- 하기 전 x값, 후의 x값 비교하여 printf
int num3=10;
printf("num3 : %d\n", num3); //10 출력
printf("num1-- : %d\n", num3--); // 10 출력 (속한 문장을 먼저 진행한 후, 값을 1 감소)
printf("num3 : %d\n\n", num3);
라. --x : --x 하기 전 x값, 후의 x값 비교하여 printf
int num4=10;
printf("num4 : %d\n", num4); // 10 출력
printf("--num4 : %d\n", --num4); // 9 출력 (값을 1 감소 후, 속한 문장의 나머지를 진행)
printf("num4 : %d\n\n", num4); // 9 출력
2. 나눗셈을 하는 프로그램을 만들되 %를 사용하지 마시오.
가. 제수와 피제수를 int형으로 입력받으시오.
나. 두 수를 나누어 몫을 구하고 int형 변수에 넣으시오
다. 두수를 나눈 제수, 피제수, 몫으로 부터 나머지 정리(검산식)를 이용하여 나머지를 구하시오. 힌트 : b=aQ+R, b-aQ=R
라. 제수, 피제수, 몫, 나머지를 출력하시오. 예를들어, ~을 ~으로 나누면 몫은~이고 나머지는~이다 로 출력하시오.
int num1, num2, div, res;
printf("피제수 입력 : ");
scanf("%d", &num1);
printf("제수 입력 : ");
scanf("%d", &num2);
div = num1 / num2;
res = num1 - num2 * div;
printf("%d을 %d로 나누면 몫은 %d이고, 나머지는 %d입니다.", num1, num2, div, res);
'금융공학 퀀트 프로그래밍 과정' 카테고리의 다른 글
투자노트 금융공학 퀀트 프로그래밍 과정 6주차 (0) 2020.04.26 투자노트 금융공학 퀀트 프로그래밍 과정 5주차 (0) 2020.04.19 투자노트 금융공학 퀀트 프로그래밍 3주차 과제 (0) 2020.04.05 투자노트 금융공학 퀀트 프로그래밍 과정 2주차 과제 (0) 2020.03.28 투자노트 금융공학 퀀트 프로그래밍 과정 1주차과제 (0) 2020.03.21