새소식

Programming Language/C++

런타임 에러

  • -

백준 10871문제를 풀었는데, 런타임 에러 발생

#include<iostream> using namespace std; int X , N; int arr[] = { 0 }; int main() { cin >> N >> X; for (int i = 0; i < N; i++) { cin >> arr[i]; } for (int i = 0; i < N; i++) { if (arr[i] < X) { cout << arr[i] << " "; } else continue; } return 0; }

-> 내가 쓴 코드.

배열 arr의 크기를 N으로 설정하지 않았음.

즉, int arr[] = {0}; 로 선언하면 크기가 1인 배열이 생성된다. 이는 입력 받을 수 있는 숫자의 개수인 N보다 작기 때문에 런타임 에러가 발생한다.

따라서 배열 arr의 크기를 N으로 설정해주어야 함!

 

그러나, c++언어에서는, 배열의 크기는 상수로 선언해야하는데.. arr[N]표현은 안되지 않을까?

-> 그럼 그냥 문제에서 N이 최대가 10000이라고 했으니까

arr[10000]로 수정하면 간단해짐

 

<최종 수정>

#include<iostream> using namespace std; int main() { int X, N; cin >> N >> X; int arr[10000];//최대로 가질 수 있는 N은 10000이므로 for (int i = 0; i < N; i++) { cin >> arr[i]; } for (int i = 0; i < N; i++) { if (arr[i] < X) { cout << arr[i] << " "; } } return 0; }

 

 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.