c++ - 如何让代码提示用户输入信息而不是硬接线?
问题描述
我有一个基于索引对数组重新排序的代码。当通过编辑器硬连线添加数字时,代码工作正常,但我如何切换它以提示用户必须通过终端输入数组和索引的数字?
#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;
}
解决方案
正如上面提到的 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
推荐阅读
- sqlite - 寻求改进此数据库设计
- c# - 在错误列表 C# vsix 扩展中显示自定义消息
- spree - 视图中如何提供'current_spree_user',而它不是实例变量
- javascript - 覆盖电子通知弹出窗口
- python - 每次运行代码时,如何将输入从 python 传输到 excel 中增加的行
- python - 通过kivy中的按钮增加变量的值
- azure-data-factory-2 - ADF 数据流空列
- javascript - 如何使用兄弟姐妹替代方法获得 jquery 效果?
- python-3.x - Python3 语音转文本
- sql - SQL:状态在 1 和 2 之间翻转;选择所有状态,自上次为 1 以来为 2