所以我需要一些帮助来为我的班级创建一个程序。实验室要求我们使用指针。 这是我们要做的事情的描述......
- 编写一个接受int数组且数组大小为参数的函数。 - 程序应该询问数组的大小,并让用户输入一些整数值。 - 该函数应该创建一个比参数数组大一个元素的新数组。 - 数组的第一个元素应设置为0。 - 参数数组的元素0应该被复制到新数组的元素1中。 - 参数数组的元素1应该被复制到新数组的元素2等。 - 该函数应返回指向新数组的指针。 - 应该有三个其他功能:getMode,getMedian和getAverage。 - 这些函数应该获得数组中值的模式,中值和平均值。 - 你应该显示参数数组和新数组以及模式,中位数和平均值。
这是我到目前为止我不确定它是否正确。任何帮助是极大的赞赏。 更新:我运行程序,它询问用户数组的大小及其值......
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <string>
int* addToSize (int*, int);
using namespace std;
int main()
{
int userSize=0; //Holds user size
int userInts; //Holds uaer values
int *memory; //dynamically allocate an array
//int *intptr;
//int *arrayNew;
//int newA;
//Gets array size
cout << "Please enter the array size!" << endl;
cin >> userSize;
//Memory array
memory = new int [userSize];
//Grab values for the amount of user size
for (int count = 0; count < userSize; count ++)
{
cout << "Please enter the value for " << count+1 << endl;
cin >> userInts;
}
for (int index = 0; index < userSize; index ++)
{
cin >> memory[index];
}
//Sets addToSize function to memory array
memory = addToSize(memory, userSize);
//Shows memory array
for(int index=0;index< (userSize + 1);index++)
cout<<memory[index]<<endl;
delete[] memory; //Used to delete memory array
memory = 0; //sets memory array to 0
return 0;
}
int* addToSize(int* arrayNew, int newSize)
{
int* expandSize= new int [newSize +1];
for (int index = 0; index < newSize; index++)
{
expandSize[index]= arrayNew[index];
}
for (int index = newSize; index < (newSize+1); index ++)
{
expandSize[index]=0;
}
return expandSize;
}
答案 0 :(得分:0)
你已经声明对某个addToSize()
函数的前向引用,该函数接受2个参数,然后从main()
开始调用它,这一切都非常好,花花公子,但接下来你定义一个addToSize()
接受3个参数。
所以,发生的事情是声明的函数与定义的函数无关。编译器完全忽略了3参数函数,因为你没有调用它,它假定你将在其他一些源文件中提供双参数函数的定义。
但是当链接器尝试链接您的程序时,没有其他文件包含带有两个参数的addToSize()
,因此链接器失败并显示错误消息,该消息准确描述了发生的情况。 (这是一个链接器错误。它与指针和数组无关。)
提示:在修复函数定义以匹配声明之前,丢失前向声明,将函数移动到文件的开头,并使其成为static
。