C++

[강의] 8월 30일 수업정리

k-codestudy 2024. 8. 30. 18:12

오늘의 문제 

예제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