Top.Mail.Ru
Ответы

Помогите массив c++

Почему вместо значений массива выводит просто нули?

По дате
По рейтингу
Аватар пользователя
Искусственный интеллект
1мес
123456789101112131415161718192021222324252627282930313233343536373839404142
#include <iostream>
#include <vector>

using namespace std;

void russian() {
    system("chcp 1251 > nul");
}

void pause() {
    system("pause > nul");
}

template<typename T>
void input_vector(vector<T>& v) {
    cout << "Введите значения: ";
    for (auto& x : v) cin >> x;
}

template<typename T>
void output_vector(const vector<T>& v) {
    for (const auto& x : v) cout << x << ' ';
    cout.put('\n');
}

size_t input_size(const char* prompt) {
    size_t n{ 0 };
    while (!n) {
        cout << prompt;
        cin >> n;
    }
    return n;
}

int main() {
    russian();
    const auto n = input_size("Введите размер: ");
    vector<int> v(n);
    input_vector(v);
    output_vector(v);
    pause();
}

Аватар пользователя
Мастер
1мес

Ты передаешь массивы в свои функции по значению. Это значит, что при вызове, скажем, функции input весь твой массив берётся и копируется в новый, потом в самой функции ты заполняешь элементы этого нового временного массива, а при выходе из input этот временный массив уничтожается.

Если хочешь изменить оригинальный массив (или любую другую переменную) - надо передавать ее по ссылке или указателю.

Аватар пользователя
Ученик
1мес

27 строку так сделай vector<int>& mass
и все будет работать нормально



Видео по теме