动态数组以及如何检查它是否具有一定数量

时间:2016-05-06 19:54:20

标签: arrays

我遇到动态数组问题。我写的代码是输入硬币数量并检查是否包含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;
}

2 个答案:

答案 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是要走的路。