invalid types int[int] for array subscript

Нужно написать программу, которая будет заправшивать ввод двух чисел, а позже выводить все целлые числа между ними (пример: 2 и 5, то программа должна вывести 2, 3, 4, 5), программа должна обязательно использовать массивы. Но компилятор выдаёт invalid types int[int] for array subscript в следующих строках: array[i] = x; cout << array[i] << endl;. Вот исходник:

#include <iostream>
using namespace std;
int main(){
    int a, b;

    cout << "Prosze, wprowadz liczbe a: ";
    cin >> a;
    cout << "Prosze, wprowadz liczbe b: ";
    cin >> b;

    int array_size = (a < b)? b-a : a-b;
    int array(array_size);

    for(int i = 1, x = a; x < b; x++, i++)
    {
        array[i] = x;
    }

    for(int i = 0; i < array_size; i++)
    {
        cout << array[i] << endl;
    }
    return 0;
}

P.S. Знаю, что было много вопросов по этой ошибке. Так зачем я задал? Все вопросы по данной ошибке связанны в основном что люди, к примеру, объявляют 2 мерный массив, а обращаются к трёхмерному или более сложные проблемы. Мой же (говно)код отличается от ихнего тем, что мой прост, мал и без каких либо излишеств по типу функций, указателей, классов и т.д.


Ответы (1 шт):

Автор решения: Harry
int array(array_size);

Это - объявление переменной array, инициализированной значением array_size.

В вашем варианте нужно что-то вроде (раз array_size во время компиляции неизвестно)

int * array = new int[array_size];

Интересно, что вы допускаете, что числа могут быть введены в обратном порядке, откуда ваше

... (a < b)? b-a : a-b;

но почему тогда вы не учитываете это здесь:

for(int i = 1, x = a; x < b; x++, i++)
→ Ссылка