C++

[강의] 9월 6일 수업정리

k-codestudy 2024. 9. 7. 03:22

- 과제 복기 - 

배열 중 가장 작은 수를 구하는 프로그램 (Index를 이용)

강사님이 작성한 코드는 배열에서 가장 작은 값을 가진 요소의 인덱스를 구한 뒤, 해당 인덱스와 값을 출력하였다.

#include <iostream>

int main()
{

	int arData[5]{ 7,10,11,13,15 };
	int nMinDataIndex{};

	nMinDataIndex = 0;

	for (int i = 0; i < 5; i++)
	{
		if (arData[nMinDataIndex] > arData[i])

			nMinDataIndex = i;
	}

	printf("index : %d, Data : %d\n", nMinDataIndex, arData[nMinDataIndex]);
}

강사님께서 짜주신 코등이가 내 코드와 무엇이 다른지 비교해 보겠다.

 

  • 강사님 코드 : 배열에서 가장 작은 값의 인덱스를 저장한 후, 그 인덱스를 이용해서 값을 출력
  • 나의 코드 : 배열의 첫 번째 값을 초기 최솟값으로 두고, 최솟값만 찾는다, 즉 인덱스는 알 수 없다.

물론 내 코드가 틀린 것은 아니지만 의도와 일치하지 않기에 틀리게 작성했다고 할 수 있다.

(복기, 배열에 인덱스를 이용해서 데이터를 알 수 있지만 데이터를 이용해서 인덱스를 알 수는 없다.)

 

잘못된 코드 예시와 주의점

아래는 잘못된 방식으로 최솟값을 찾는 코드입니다.

#include <iostream>

int main()
{
	int arData[5]{ 1,2,3,4,5 };

	int nMinData{};

	nMinData = 9999;


	for (int i = 0; i < 5; i++)
	{
		if (nMinData > arData[i])
			nMinData = arData[i];
	}

	printf("%d", nMinData);
}
  • 잘못된 점 - nMinData에 임의의 큰 값을 초기값으로 설정, 만약 배열에 9999보다 큰 값이 있다면, 잘못된 최솟값을 반환하게 된다.
  • 주의점 - 코드에서 임의의 값으로 초기화하지 말자. 외부 데이터 관리자가 이 사실을 모를 경우, 심각한 오류로 이어질 수 있다. 

 

피보나치수열을 구하는 프로그램

문제 1: 피보나치수열을 구하는 프로그램 (15번 출력)

#include <iostream>

int main()
{

	int nDataA{};
	int nDataB{};
	int nSum{};

	nDataA = 0;
	nDataB = 1;

	for (int i = 0; i < 15; i++)
	{
		printf("%d\n", nDataB);

		nSum = nDataA + nDataB;
		nDataA = nDataB;
		nDataB = nSum;
	}
}
  • 정수형 변수 nDataA, nDataB, nSum을 선언
  • nDataA와 nDataB를 각각 0과 1로 초기화
  • for문을 사용하여 15번 반복을 진행
  • printf를 사용하여 먼저 nDataB의 값을 출력하고 nSum에 nDataA + nDataB의 값을 저장 후  nDataA에는 nDataB값을 저장시키고 nDataB에는 nSum의 값을 저장 후 반복 ( 피보나치수열 계산)
  •  
  1. 문제 2: 배열 인덱스와 매칭하여 피보나치수열을 구하는 프로그램
#include <iostream>

int main()
{
	const int nSize = 15;
	int arFibonacci[nSize]{};
	int nFibonacciIndex{};

	arFibonacci[0] = 0;
	arFibonacci[1] = 1;

	for (int i = 2; i < nSize; i++)
	{
		arFibonacci[i] = arFibonacci[i - 2] + arFibonacci[i - 1];
	}

	scanf_s("%d", &nFibonacciIndex);
	printf("%d\n", arFibonacci[nFibonacciIndex]);
}
  • cosnt ( 상수 : 변하지 않는 값)  키워드를 사용하여 nSzie를 15로 고정시킴.
  • arFibonacci라는 배열을 생성하고 nSize의 값을 배열의 크기로 지정
  • 정수형 변수인 nFibonacciIndex을 선언 
  • arFibonacci [0] , arFibonacci [1]에 각각 0과 1을 저장
  • for문을 사용해 2부터 nSize값까지 반복하여 피보나치수열의 값을 arFibonacci 배열에 저장
  • scanf_s를 사용하여 값을 입력받아 nFibonacciIndex 저장
  • arFibonacci [ nFibonacciIndex ]에 해당하는 값을 출력

'C++' 카테고리의 다른 글

[강의] 9월 12일 수업정리  (0) 2024.09.12
[강의] 9월 11일 수업정리  (0) 2024.09.11
[강의] 9월 5일 수업정리  (0) 2024.09.06
[강의] 9월 4일 수업정리  (0) 2024.09.05
[강의] 9월 3일 수업정리  (1) 2024.09.04