프로그램이 루프에 멈춤

플루토늄 밀수업자

아래에 주어진 매우 간단한 프로그램이 있습니다. cout어떤 줄이 실행되는지 알기 위해 s를 삽입했습니다 .

int main(void) {
  int n_in = 0;
  int keys = 0;
  cin>>n_in;
  long long in_array[n_in];

  for(int i=0; i<n_in; i++){
    cin>>in_array[i];
  }
  cout<<"Executed"; 
  cin>>keys;
  cout<<"Executed"<<" "<<keys;
  int index[keys];
  long long key_array[keys];
  cout<<"Executed";
  for(int j=0; j<keys; j++){
    cin>>key_array[j];
    cout<<"Iteration" <<j<<"complete" ;
  }
  cout<<"Executed";
  //bin_search(in_array, n_in, key_array, keys, index);

  for(int i=0; i<keys; i++){
    cout<<index[i]<<" " ;
  }
  return 0;

}

스크린 샷이 제공됩니다.

여기에 이미지 설명 입력

이미지에서 볼 수 있듯이 마지막 반복은 완료되지 않으며 이유를 모르겠습니다. iteration0complete뒤의 숫자 는 입력입니다.

누군가 무슨 일이 일어나고 있는지 설명해 주시겠습니까?

무라드

Here is a modified version of your code, as mentioned in the comments i used vectors instaed of arrays, because you can use vector without knowing the size of it, which is the opposite of declaring arrays, at compile time the compiler must know the size of the array, but you define an array and you give it a size which is not a constant at compile time, i commented the part of the code where you use the array index[] because i dont know why you are printing what the array has, while it is empty, you dont have anything inside it you just declared it.

here is the code hope it fulfill your needs.

#include<string>
#include<vector>
#include<iostream>



using namespace std;


int main(){


    int n_in = 0;
  int keys = 0;
  cin>>n_in;
  vector<long long> in_array;

  for(int i=0; i<n_in; i++){
      int k =0;
      cin >> k;

    in_array.push_back(k);
  }
  cout<<"Executed"; 
  cin>>keys;
  cout<<"Executed"<<" "<<keys;

  vector<int> index;
  vector<long long> key_array;
  cout<<"Executed";

  for(int j=0; j<keys; j++){
      int p =0;

    cin>>p ;
        key_array.push_back(p);
    cout<<"Iteration" <<j<<"complete" ;
  }
  cout<<"Executed";
  //bin_search(in_array, n_in, key_array, keys, index);

  /*for(int i=0; i<keys; i++){
      int m =0;

    cout<<index[i]<<" " ;
  }
*/

    return 0;
}

Edit: What you said in the comment is true in C, but in c++ the compiler need to have the exact size of the array when compiling, otherwise you will have to use the new operator to dynamically allocate memory.

예를 들면 :

int MyArray[5]; // correct

또는

const int ARRAY_SIZE = 6;
int MyArray[ARRAY_SIZE]; // correct

그러나

int ArraySize = 5;
int MyArray[ArraySize]; // incorrect

그것을 요 ​​약하기:

배열의 요소 수는 상수 표현식이어야합니다. 변수 경계가 필요한 경우 벡터를 사용하십시오.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

프로그램이주기에 멈춤

분류에서Dev

프로그램이 wait ()에서 멈춤

분류에서Dev

프로그램이 getResponseCode ()에서 멈춤

분류에서Dev

while 루프에서 멈춤

분류에서Dev

로그인 루프에서 멈춤

분류에서Dev

프로그램이 파이프에서 멈춤 (exec ls grep sort)

분류에서Dev

루프가 무한 루프에 멈춤

분류에서Dev

while 루프로 멈춤

분류에서Dev

작업 표시 줄에 프로그램이 멈춤

분류에서Dev

Wordcount 프로그램이 hadoop-2.3.0에서 멈춤

분류에서Dev

Java 프로그램이 특정 스레드에서 멈춤

분류에서Dev

Linux 응용 프로그램이 boost :: thread :: join에서 멈춤

분류에서Dev

session.join ()에서 프로그램이 멈춤

분류에서Dev

Java 파일에 쓸 때 프로그램이 멈춤

분류에서Dev

scanf / cin이 루프에 멈춤

분류에서Dev

mouseover 이미지가 루프에 멈춤

분류에서Dev

while 루프 중에 양식이 멈춤

분류에서Dev

Java JToggleButton이 While 루프에서 멈춤

분류에서Dev

Java JToggleButton이 While 루프에서 멈춤

분류에서Dev

첫 페이지에 루프가 멈춤

분류에서Dev

게임 루프가 내 프로그램을 완전히 멈춤

분류에서Dev

자바 스레드 루프가 프로그램을 멈춤

분류에서Dev

자바 : while 루프가 프로그램을 멈춤

분류에서Dev

업데이트 후 GUI 로그인이 루프에서 멈춤

분류에서Dev

16.04 : 로그인이 루프에서 멈춤

분류에서Dev

분기 후 while 루프에서 멈춤

분류에서Dev

JavaFx가 while 루프에서 멈춤

분류에서Dev

PHP가 루프 운동에 멈춤

분류에서Dev

vb.net 응용 프로그램이 TeamViewer와 함께 멈춤