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.
For example:
int MyArray[5]; // correct
or
const int ARRAY_SIZE = 6;
int MyArray[ARRAY_SIZE]; // correct
but
int ArraySize = 5;
int MyArray[ArraySize]; // incorrect
To sum it up:
The number of elements of an array, must be a constant expression . If you need variable bounds, use a vector.