Как динамически вводить массив в C ++? - PullRequest
0 голосов
/ 27 июня 2019

Это простой код, в котором я хочу напечатать элементы массива, которые предоставляются в качестве входных данных.

int main() {
    int t;
    cin>>t;
    while(t--){
        int n;
        cin>>n;

        int *arr = new int[n];
        for(int i=0;i<n;i++)
            cin>>arr[i];

        for(int i=0;i<n;i++)
            cout<<arr[i];
        cout<<endl;
    }
    //code
    return 0;
}

input:

2
5
1 2 3 5
10
1 2 3 4 5 6 7 8 10

вывод, полученный этим кодом

123510
2

, но это не должен быть вывод, так как он должен создать другой массив из 1-10.

Должен бытьглупая ошибка, но я не знаю, где

Ответы [ 2 ]

1 голос
/ 27 июня 2019

В третьей строке ввода отсутствует 4.

Таким образом, он анализируется как:

2  // two arrays
5  // first one size 5
1 2 3 5
10  // end of the first array
1  /* second one size 1 */ 2 /* end of the second array */ 3 4 5 6 7 8 10 
// the end is ignored
0 голосов
/ 27 июня 2019

Ваш код работает отлично! ты просто облажался в первом примере вы ожидаете 5 чисел и вводите только 4, а во втором примере вы ожидаете 10 чисел и даете 9. если вы создаете массив с [5], то максимальный индекс равен 4, но так как индекс начинается с 0, общий размер равен 5. если именно поэтому вы пропускаете один элемент каждый раз.

...