首页 > 解决方案 > 如何让代码提示用户输入信息而不是硬接线?

问题描述

我有一个基于索引对数组重新排序的代码。当通过编辑器硬连线添加数字时,代码工作正常,但我如何切换它以提示用户必须通过终端输入数组和索引的数字?

#include <iostream>

using namespace std;

void reorder(int arr[], int index[], int n)
{
    int temp[n];

    for (int i = 0; i < n; i++)
        temp[index[i]] = arr[i];

    for (int i = 0; i < n; i++) {
        arr[i] = temp[i];
        index[i] = i;
    }
}

int main()
{
    int arr[] = { 3, 2, 1, 5, 6, 4 };
    int arb[] = { 5, 6, 1, 3, 2, 4 };
    int index[] = { 3, 4, 2, 0, 1, 5 };

    int n = sizeof(arr) / sizeof(arr[0]);
    cout << "\nSequence array is: \n";
    for (int i = 0; i < n; i++)
        std::cout << index[i] << ' ';
    cout << "\nOriginal array is: \n";
    for (int i = 0; i < n; i++)
        cout << arr[i] << " ";
    printf("\n");

    reorder(arr, index, n);
    reorder(arb, index, n);

    cout << "Reordered array is: \n";
    for (int i = 0; i < n; i++)
        cout << arr[i] << " ";

    printf("\n");

    printf("\n");

    return 0;
}

标签: c++

解决方案


正如上面提到的 Tomas,使用 std::vector 代替。但是,如果您真的想使用 int[] ,以下应该可以工作。

int nDigits = 0;
cout << "Enter number of digits:" << endl;
cin >> nDigits;

int* arr;
int* index;
arr  = new int[nDigits];
index = new int[nDigits];

for(int i = 0; i < nDigits; i++){
    cout << "Enter arr element (" << i << "):" << endl;
    cin >> arr[i];
    cout << "Enter index element (" << i << "):" << endl;
    cin >> index[i];
}

... 使用向量代替 tbh


推荐阅读