我遇到动态数组问题。我写的代码是输入硬币数量并检查是否包含1。如果它不包含在数组中,则包括1到数组。但阵列大小是“固定的”所以我不能改变阵列的大小,同时保持输入其他数字。如何在不搞乱我的阵列的情况下做到这一点?
#include <iostream>
using namespace std;
int main()
{
int N,coin;
cout << "Enter the value N to produce: " << endl;
cin >> N;
cout << "Enter number of different coins: " << endl;
cin >> coin;
int *S = new int[coin];
cout << "Enter the denominations to use with a space after it" << endl;
cout << "(1 will be added if necessary): " << endl;
for(int i = 0; i < coin; i++)
{
cin >> S[i];
if(S[i] != 1)
S[coin] = 1; // confused at this part of how to set the last element to 1
cout << S[i] << endl;
}
//system("PAUSE");
return 0;
}
答案 0 :(得分:1)
这里是伪代码/评论
bool hasOne;
for(int i = 0; i < coin; i++) {
cin >> S[i];
if(S[i] == 1) hasOne = true;
}
if(!hasOne) {
// create a new array size one more than S
// copy elements from S to the new array
// set the last element to 1 in the new array
// assign the new array to S
}
答案 1 :(得分:0)
你需要将1附加到数组的末尾吗?如果是这样,我会使用std :: vector对象而不是数组
#include <vector>
vector<int> S;
for(int i = 0; i < coin; i++)
{
cin >> S[i];
if(S[i] != 1)
S.push_back(1);
cout << S[i] << endl;
}
如果必须使用数组,则需要使用malloc()动态分配内存。但是因为你正在使用c ++ std :: vector是要走的路。