我的C ++程序有问题。 Involes动态调整整数数组的大小

时间:2018-04-19 00:35:14

标签: c++ arrays function pointers dynamic

以下是我目前的情况:http://cpp.sh/54vn3

#include <iostream>
#include <string>
#include <cmath>
#include <iomanip>
#include <cstdlib>
using namespace std;

int *reSIZE(int *&original, int &SIZE, const int &maxSIZE); //function prototype resize
void sortFUNC(int *&original, int &SIZE, const int &maxSIZE); //function prototype sortFUNC

int main()
{
    int SIZE = 4; //size of current array
    int maxSIZE = 10; //size of final array
    int *original = new int[SIZE] {5, 7, 3, 1}; //old(current) array

    cout << "Elements in array: "; //test output
    reSIZE(original, SIZE, maxSIZE); //call function resize
    cout << endl << endl; //blank line
    cout << "Elements in array in increasing order: "; //test output
    sortFUNC(original, SIZE, maxSIZE); //call function sortFUNC
    cout << endl << endl;
    return 0;
}

int *reSIZE(int *&original, int &SIZE, const int &maxSIZE)//function definition
{
    int *temporiginal = new int[SIZE + 3]; //(final)new array

    for (int i = 0; i < SIZE; i++) //copy old array to new array
    {
        temporiginal[i] = original[i];
        cout << original[i] << setw(3);
    }

    delete[] original; //delete old array
    original = temporiginal; //point old array to new array
    return temporiginal;
}

void sortFUNC(int *&original, int &SIZE, const int &maxSIZE)
{
    for (int i = 0; i < SIZE; i++)
    {
        int smallest = original[i];
        int smallestINDEX = i;

        for (int m = i; m < SIZE; m++)
        {
            if (original[m] < smallest)
            {
                smallest = original[m];
                smallestINDEX = m;
            }
        }

        swap(original[i], original[smallestINDEX]);
    }

    int *temporiginal = new int[SIZE + 3];

    for (int i = 0; i < SIZE; i++)
    {
        temporiginal[i] = original[i];
        cout << original[i] << setw(3);
    }

    delete[] original;
    original = temporiginal;
}

我想在main的数组末尾添加一些元素,但是当我这样做时,程序在运行时会崩溃。我创建的resize函数应该扩展main中的函数以容纳10个元素。 main中的那个原本保存4.新数组应该将其更改为10.如何在main中向数组添加三个以上的整数而不会崩溃?我的调整大小功能错了吗?或者这是我主要的问题?现在显示的程序按原样工作。但是当我在main中的数组中添加另一个整数时,它会崩溃。比如,如果我在1之后添加2。

感谢。

编辑:我可以通过在resize函数中添加元素来在main的数组末尾添加元素。

cpp.sh/35mww

如前所述,未使用maxSIZE。还有更多无用的东西。我必须清理它,但我想出了我想弄清楚的东西。我还不知道如何使用结构。我知道有很多不同的方法来编写程序。我只是个初学者。

谢谢大家。

1 个答案:

答案 0 :(得分:0)

每次调用函数rezise时都需要修改大小的值,即使你调用函数调整大小3次,你的数组大小也会有SIZE + 3.调用后调整大小试试

original[4] = 0;
original[5] = 0;
original[6] = 0;

然后尝试这样做。

   original[7] = 0;

你应该能够看到你的错误