Как изменить код для распечатки массива v2 - PullRequest
0 голосов
/ 04 февраля 2020

Мой код использует для L oop для копирования и вставки содержимого V1 -> V2. Я хотел бы видеть выходные данные v2 с использованием cout, но я не уверен, куда поместить эту строку кода.

void copy_fct();

int main()
{

copy_fct();


}


void copy_fct()
{
    int v1[10] = {0,1,2,3,4,5,6,7,8,9};
    int v2[10];

    for (int i=0; i!=10; ++i){
        v2[i]=v1[i];

    }

}

Ответы [ 2 ]

1 голос
/ 04 февраля 2020
#include <iostream>
void copy_fct();

int main()
{

copy_fct();


}


void copy_fct()
{
    int v1[10] = {0,1,2,3,4,5,6,7,8,9};
    int v2[10];

    for (int i=0; i!=10; ++i){
        v2[i]=v1[i];
        std::cout << v2[i] << " ";
    }
    std::cout << std::endl;

}
0 голосов
/ 04 февраля 2020

В вашей программе название функции copy_fct не имеет большого смысла, потому что оно ничего не копирует, переданное функции пользователем. Он имеет дело со своими локальными переменными.

Кажется, вы имеете в виду что-то вроде следующего.

#include <iostream>

void copy_fct( const int a1[], size_t n, int a2[] )
{
    for ( size_t i = 0; i < n; i++ ) a2[i] = a1[i];
}

int main() 
{
    const size_t N = 10;
    int v1[N] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    int v2[N];

    copy_fct( v1, N, v2 );

    for ( int item : v2 ) std::cout << item << ' ';
    std::cout << '\n';

    return 0;
}

Вывод программы:

0 1 2 3 4 5 6 7 8 9 

Та же задача может быть выполнена используя стандартные алгоритмы.

#include <iostream>
#include <iterator>
#include <algorithm>

int main() 
{
    const size_t N = 10;
    int v1[N] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    int v2[N];

    std::copy( std::begin( v1 ), std::end( v1 ), std::begin( v2 ) );

    std::copy( std::begin( v2 ), std::end( v2 ), std::ostream_iterator<int>( std::cout, " " ) );

    return 0;
}
...