What i would like to do is declare an array with "dim" size :int A[dim];
.
Now, this works if I declare something like const int dim = 1
but doesn't with const int dim = round(x);
, which is what i need to do. (Where x
comes from cin >> x
.)
Note: With "doesn't work" i refer to Visual Studio Code throwing red wavy line under dim
in int A[dim];
and displaying the following when hovering it with my mouse:
`
expression must have a constant valueC/C++(28)
main.cpp(15, 11): the value of variable "dim" (declared at line 13) cannot be used as a constant
`
This is the relevant code:
#include <iostream>
using namespace std;
int main(){
float x;
cin >> x;
const int dim = round(x);
int A[dim];
int i = 0;
}
}
Given the context i believe the error is caused by one of two reasons:
- Some characteristic of
round()
that makes theconst int dim = round(x)
not recognized as constant from the array later. - The problem is the
x
and not theround()
socin >> x
is the reason.
[Thanks for whoever can explain me what I'm missing or point to some documentation that does. I have done some research but I haven't found a solution to this. Also this is my first question on SO, so tell me if I should change/improve something]
EDIT: Apparently the problem isn't in the round(x)
as I previously thought because simply replacing const int dim = round(x);
with const int dim = x;
gives the same "error".
So the problem has to do with cin >> x
.
EDIT 2 Note: I'm looking for a solution that doesn't use std::vector
. We haven't studied it yet in the course so I believe the algorithm(from which i took the relevant code) shouldn't comprehend it.
Final Edit I didn't realize that, as @paulmckenzie clarified, using cin
made the array dynamic because the imput comes in runtime, it was a really stupid error but I apologize, I'm really a beginner. In my defense we really haven't talked about dynamic size arrays so I guess that's what threw me off. I realized from the beginning I was missing something very basic, sorry for wasting time, I'll put even more time analyzing everything before posting next time.