오늘의 문제
예제1. 공약수를 구하는 프로그램
조건 - 0보다 큰 int형 변수를 2개 입력 받아라.
#include <iostream>
int main()
{
int nInput1{};
int nInput2{};
int nNumber{};
int nRemainder1{};
int nRemainder2{};
int nMin{};
scanf_s("%d", &nInput1);
scanf_s("%d", &nInput2);
nNumber = 1;
nMin = nInput1;
if (nInput1 > nInput2)
nMin = nInput2;
while (nNumber <= nMin)
{
nRemainder1 = nInput1 % nNumber;
nRemainder2 = nInput2 % nNumber;
if (nRemainder1 == 0 && nRemainder2 == 0)
printf("%d\n", nNumber);
nNumber++;
}
}
- 정수형 변수 nInput1, nInput2, nNumber, nRemainder1, nRemainder2, nMin를 선언
- scanf_s를 이용하여 nInput1, nInput2에 값을 입력받아 저장
- nMunber는 1을 초기화하여 고정값으로 사용
- nMin에 nInput1를 저장시키고, if문을 이용하여 nInput2가 더 작다면 nMin안에 nInput2를 저장
- while문을 사용하여 nNumber가 nMin보다 작거나 같을 때까지 반복
- nRemainder1, nRemainder2에 각각 nInput1 % nNumber, nInput2 % nNumber 값을 저장하여 약수를 구함
- if문을 사용하여 nRemainder1 == 0 && nRemainder2 == 0 조건을 주어 공약수를 판별하고, 조건이 참이면 nNumber의 값을 출력
- nNumber를 1증가시킨 후 다시 반복
[문제 해결 시 잘못 생각한 부분]
- 2중 while문을 사용하여 값이 이상하게 나옴.
- 입력받은 값에 nNumber부터 증가하는 값을 나눠서 판별하는 과정을 제대로 이해하지 못하고, && 연산자의 사용을 생각하지 못함.
- 공약수를 구할 때 작은 수까지만 반복하는 것이 효율적인데 큰 수를 기준으로 잡아 설계함
오늘의 질문
int nData{1};
int nData{};
nData = 1;
유니폼 초기화를 사용해 변수 선언과 동시에 값을 초기화하는 것과 따로 선언하여 값을 초기화하는 것의 차이점
- int nData{1}; : 선언과 동시에 1로 초기화
- int nData{}; nData = 1; : 선언 시 0으로 초기화되고 나중에 1로 대입
즉, 관점의 차이인것이다.
나중에 변수를 많이 만들면 위의 방식은 관리하기 힘들기에 아래방식으로 습관을 들여보자.
'C++' 카테고리의 다른 글
| [강의] 9월 4일 수업정리 (0) | 2024.09.05 |
|---|---|
| [강의] 9월 3일 수업정리 (1) | 2024.09.04 |
| [강의] 8월 29일 수업정리 (0) | 2024.08.29 |
| [강의] 8월 28일 수업정리 (1) | 2024.08.28 |
| [강의] 8월 27일 수업정리 (0) | 2024.08.27 |