- 과제 복기 -
배열 중 가장 작은 수를 구하는 프로그램 (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의 값을 저장 후 반복 ( 피보나치수열 계산)
- 문제 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 |