以下是我目前的情况: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。还有更多无用的东西。我必须清理它,但我想出了我想弄清楚的东西。我还不知道如何使用结构。我知道有很多不同的方法来编写程序。我只是个初学者。
谢谢大家。
答案 0 :(得分:0)
每次调用函数rezise时都需要修改大小的值,即使你调用函数调整大小3次,你的数组大小也会有SIZE + 3.调用后调整大小试试
original[4] = 0;
original[5] = 0;
original[6] = 0;
然后尝试这样做。
original[7] = 0;
你应该能够看到你的错误