用C++创建柱状图(作业)
Creating a histogram with C++ (Homework)
在我的c++类中,我们被分配了对。通常情况下,我可以很容易地想出一个有效的算法,但这次我不知道如何做到这一点来挽救我的生命。
我想要的是有人来解释一个算法(或者只是给我一些可行的提示),以便完成这项工作。我仍处于计划阶段,我想自己完成这段代码,以便学习。我只需要一点帮助就可以到达那里。
我们必须创建基于4或5整数输入的直方图。它应该看起来像这样:
Calling histo(5, 4, 6, 2) should produce output that appears like:
*
* *
* * *
* * *
* * * *
* * * *
-------
A B C D
这种格式简直要了我的命。更糟糕的是,我们不能使用任何类型的数组或使用其他库的"高级"排序系统。
一开始我以为我可以把值从高到低排列。但后来我意识到,如果不使用排序函数,我不知道如何做到这一点,也不知道如何继续下去。
感谢任何能帮助我开始这项任务的人。:)
尝试以下方法:
- 确定直方图中的最大数字
-
使用这样的循环来构建直方图:
for(int i = largest; i >= 1; i--)
在循环主体内,执行步骤3至5(包括)
-
如果
i <= value_of_column_a
,则打印*
,否则打印空间 -
对每列重复步骤3(或写一个循环…)
-
打印换行符
-
使用
-
打印水平线 -
打印列标签
也许我弄错了你的q,但如果你知道每列中有多少项,那么像你的例子一样打印它们应该很容易:
步骤1:找到数字的最大值,存储在变量中,分配给列。
第二步:打印空格,直到到达带有最大打印星号的列。打印剩余的星号/空格。添加字符。
步骤3:找到下一个最大值。在最大值>=最大值的列中打印星号,否则打印空格。添加换行符。最后。
步骤4:重复步骤3(直到出现以下停止条件)
当你打印了等于最大值的星星数时,你就打印了所有的星星。
步骤5:添加--------行和
步骤6:添加行标题和\n
如果我正确理解了这个问题,我认为这个问题可以这样解决:
a= <array of the numbers entered>
T=<number of numbers entered> = length(a) //This variable is used to
//determine if we have finished
//and it will change its value
Alph={A,B,C,D,E,F,G,..., Z} //A constant array containing the alphabet
//We will use it to print the bottom row
for (i=1 to T) {print Alph[i]+" "}; //Prints the letters (plus space),
//one for each number entered
for (i=1 to T) {print "--"}; //Prints the two dashes per letter above
//the letters, one for each
while (T!=0) do {
for (i=1 to N) do {
if (a[i]>0) {print "*"; a[i]--;} else {print " "; T--;};
};
if (T!=0) {T=N};
}
这样做的目的是,对于每个输入的非零数字,它将打印一个*,然后减少输入的数字。当其中一个数字变为零时,它将停止为其列放置*s。当所有数字都变为零时(注意,当T的值从的中出来时会发生这种情况。这就是变量T的作用),它就会停止。
我认为问题不在于直方图。注意,它也不需要排序,甚至不需要知道
- 将执行、作业和WinAPI相乘
- 为什么我的多线程作业队列崩溃
- 正在解码MSVC 32位版本的程序集(作业).没有手术做什么
- 使用"Task"函数指针队列定义作业管理器
- C++秘密消息学校作业
- 动态类的分段错误(家庭作业问题)
- 我已经阅读了很多关于 2d 数组的信息,但我在作业中使用它时遇到了麻烦
- CMAKE:动态作业池更改
- C++17 排序:作业左侧的后递增
- 所以我正在为我的学校作业练习继承,但我无法正确实施标题保护
- 类作业中的非左值
- 不知道如何在家庭作业任务中实现一件事
- 我正在尝试为家庭作业加密邮件
- 将作业传递给另一个函数,而不会延迟 arduino
- 正在取消线程池中运行的任意作业
- 由 JOB 中的进程启动的子进程是否可以将 JOB 属性设置为脱离作业?
- 我正在尝试解决英特尔架构并行基础课程中关于 Coursera 的一项作业
- 复印作业操作员说明
- 是回文作业练习
- 为什么作业提交网站的输出与Visual Studio不同