Ввод массива используя функции

271
10 июня 2017, 15:39

День добрый. Имеются функции.

void printArray(int arr[], int size)
{
    for (int i = 0; i < size; i++)
    {
        cout << arr[i] << " ";
    }
}
void scanArray(int arr[], int size)
{
    for(int i = 0; i < size; i++)
    {
        cout << i+1 << " element: ";
        cin >> arr[i];
    }
}

И в main

    int main()
{
    int n,k,m;
    int i,j,temp;
    int dn=2*n,dm=2*m;
    int counter = 0;
    int c=n;
    counter = 0;
    cout << "Enter n" << endl;
    cin >> n;
    cout << "Enter k" << endl;
    cin >> k;
    cout << "Enter m" << endl;
    cin >> m;
    int arr[n];

    scanArray(arr,dm);
    printArray(arr,dm);

    return 0;
};

Если вводить массив без функции, то все нормально. А если используя функцию, то он не ограничивается. Т.е. я ввожу значения и вывод не происходит. Бесконечный ввод грубо говоря.

Answer 1
int dn=2*n,dm=2*m;
int counter = 0;
int c=n;
counter = 0;

Удалить.

scanArray(arr,dm);
printArray(arr,dm);
scanArray(arr, n);
printArray(arr, n);

Так работает, да. Но если я меняю n на dm, то после того, как я вводу n,m,k выходит ошибка. А мне нужно чтоб размер массива был в 2 раза больше m.

int arr[dm];
scanArray(arr, dm);
printArray(arr, dm);

Ну так присваивай их после считывания, а не до.

Answer 2

Когда вы создаете переменную n, она принимает, можно сказать, случайное, неизвестное вам значение. Поэтому переменная dn  принимает неверное значение. Инициализируйте значение dn после ручного ввода переменной n. Тоже самое с переменными m и dm соответственно.

READ ALSO
Регулярные выражения в Qt5

Регулярные выражения в Qt5

Помогите пожалуйста записать регулярное выражение, которое «извлекает» из строки следующее выражение: «photoЦИФРЫ_ЦИФРЫ»Необходимо получить...

238
Вопросы по ссылкам в C++

Вопросы по ссылкам в C++

1То что ссылку нельзя инициализировать значением вместо другой переменной это понятно и логично, но как получается что если указать ссылку...

284
Удаление по ключам (хеширование)

Удаление по ключам (хеширование)

Стоит задача: Создать хеш-таблицу со случайными ключами и удалить из нее записи с ключами из диапазона min<key<max

346
Узнать статус I/O операции С++

Узнать статус I/O операции С++

Есть ли возможность контроллировать статус выполнения операций вывода в С++ без try - catch блоков?

268