例:
输入:5 4 2 1 10
输出:Median = 4
我在Problem Solving with C++ Walter Savitch中找到了这个问题,但我无法解决。任何人都可以向我解释一下吗?
答案 0 :(得分:9)
尝试提供有关家庭作业的建议:
1)Make sure you know how to get a Median。你可以在头脑中或纸上找出来吗?现在,你如何编写一个程序来为你做这个? Make a flowchart
2)编写程序来执行此操作。用户为您的程序提供5个数字,您的程序将中位数作为答案。
3)使程序更好。偶数个数字会改变方法以获得中位数。更改您的程序,以便它允许6个数字。
3b)让你的程序接受任何数量的数字。 (我添加了这个,不是在你的帖子或你的书中,但如果你已经完成2和3,那么应该非常容易。)
答案 1 :(得分:4)
有人可以向我解释一下吗?
“制定步骤”的意思是“解释如何做”。例如,假设您向我解释如何解决问题,我不需要使用计算机(我正在尝试用铅笔和纸做),而且我不知道是什么“中位数”是。
“开发应用程序”是指“编写软件”。该软件需要:a)从用户那里获得五个号码(并且可能确保这些号码是“唯一的”); b)找到“中位数”(使用您之前在步骤1中制定的步骤); c)显示(输出)它找到的中位数。
当需要偶数输入时,您需要定义“中位数”的含义,并相应地更改您的程序。
答案 2 :(得分:2)
我知道没有人要求使用STL给出答案,但是对于稍后来这里的人来说这可能很有用。
在带有STL的C ++中,有一个名为nth_element
的函数,它有三个参数。它会对容器进行排序,以便在正确的位置获得第n个元素。
一个例子:
int numbers[] = { 5, 4, 2, 1, 10 };
std::nth_element(numbers, numbers+2, numbers+5);
std::cout << numbers[2] << "\n";