Почему я ничего не могу ввести?

#c #arrays #input

Вопрос:

Я думаю, что написал правильный код, но я ничего не могу ввести. Пожалуйста, помогите мне.

Вопрос — https://codeforces.com/problemset/problem/25/A

Мой код-

 #include<iostream>
using namespace std;

int main(){
    int n,count(0);
    int arr[n];
    for(int i=0;i<n;  i){
        cin>>arr[i];
    }
    for(int i=2; i<n;   i){
        if(arr[i]-arr[i-1] != arr[i-1]-arr[i-2]){
              count;
        }
    }
    cout<<count<<endl;
    return 0;
}
 

Комментарии:

1.Примечание: n здесь неинициализировано, использование arr[n] опасно и может привести к UB. Кроме того, массивы переменной длины (VLA) не являются частью стандарта C .

2. Как вы думаете, сколько именно чисел будет введено этим кодом?

3. Используйте std::vector , когда вам нужно сохранить значения, но количество неизвестно во время компиляции. Используйте массивы, когда емкость известна во время компиляции.

Ответ №1:

Вероятно, это неопределенное поведение из-за того, что ваша int n переменная неинициализирована. Инициализация n до явного значения позволяет вводить данные по назначению.

Комментарии:

1. » Вероятно, это неопределенное поведение » Это не только вероятно. Это связано с неопределенным поведением. Простое чтение неинициализированных переменных вызывает неопределенное поведение в соответствии со стандартом.