我是一个相对较新的C ++学习者,而且我遇到了一些麻烦。如果你们看过这个标题,这是一个家庭作业问题(只是让你们知道那里),而且我不确定我的错误在哪里。使用GIT Bash,我无法理解为什么这不是编译(或者我可能只是不知道如何阅读它)。我觉得我已经触及了所有的基础,并希望快速查看一下,看看我的错误是否明显。我已经通过stackoverflow完成了一对外观,因此从另一个帖子中使用了向量中的输入值,但我对它进行了一些修改。另外,我添加了从最小到最大的向量。
另外,如何更改for语句以允许向量中的变量#?
#include <iostream>
#include <vector>
using namespace std;
double showMedian(const vector<int> & vecmedian, int size)
{
int middle;
double average, median;
middle = size / 2.0;
if (size % 2 == 0)
{
median = (vecmedian[middle] + vecmedian[middle + 1]) / 2.0;
cout << "The median is: " << average << endl;
}
else
{
median = vecmedian[middle + 0] / 1.0;
cout << "The median is: " << median << endl;
}
return median;
}
int main()
{
int n,input, i;
vector<int> vecmedian;
vector<int>::iterator itr;
cout << "Enter the amount of numbers: ";
cin >> n;
cout << "Enter your numbers to be evaluated: " << endl;
while (vecmedian.size() < n && cin >> input){
vecmedian.push_back(input);
}
for(i = 1; i < 10; ++i){
for(itr = vecmedian.begin(); itr != vecmedian.end(); ++itr){
if(vecmedian[i] < *itr){
vecmedian.insert(itr, vecmedian[i]);
break;
}
}
if(itr == vecmedian.end())
vecmedian.push_back(vecmedian[i]);
}
showMedian();
return 0;
}
答案 0 :(得分:2)
第1点
制作function prototypes
时,您需要使它们与function
的实际定义保持一致。
你有:
void showMedian();
作为function-prototype
但你有:
double showMedian(int *vecmedian, int size)
作为实际定义。 他们都需要保持一致。
由于您尚未声明数组,因此可能会将showMedian
的参数更改为:
double showMedian(const vector<int> & vecmedian, int size)
第2点
if(nums[i] < *itr)
nums
在哪里宣布?
第3点
如果您想使用showMedian
的定义,那么假设您进行了上述更改(假设n
是大小),请使用它使用的参数。
showMedian(vecmedian, n);
修改强>
通过评论部分中的所有咨询和新更新的OP问题,这是一个相当可靠的程序,可在median
中找到vector
:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
double showMedian(const vector<double> & vecmedian, int num);
int main()
{
unsigned int n;
double input;
vector<double> vecmedian;
// cout << "Enter the amount of numbers: ";
do {
cout << "Enter the amount of numbers: ";
while(!(cin >> n)){
cout << "Wrong input" << endl;
cout << "Enter the amount of numbers: ";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
if (n == 0)
{
cout << "Invalid, size must be greater than 0" << endl;
}
} while (n == 0);
// cout << "Enter your numbers to be evaluated: " << endl;
for (int i = 1; i <= n; ++i)
{
cout << "Enter number here (" << ((n + 1) - i) << " number/s remaining): ";
while(!(cin >> input)){
cout << "Wrong input" << endl;
cout << "Enter number here (" << ((n + 1) - i) << " number/s remaining): ";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
vecmedian.push_back(input);
}
// while (vecmedian.size() < n && cin >> input){
// vecmedian.push_back(input);
// }
sort(vecmedian.begin(), vecmedian.end());
showMedian(vecmedian, vecmedian.size());
return 0;
}
double showMedian(const vector<double> & vecmedian, int num)
{
int middle;
double median;
middle = (num / 2);
if (num % 2)
median = vecmedian[middle];
else
median = (vecmedian[middle - 1] + vecmedian[middle]) / 2.0;
cout << "The median is: " << median << endl;
return median;
}