c - 如何输出垂直直方图?
问题描述
我有一个字符串数组,其中包含 10 个国家/地区的名称(最大长度为 100)。我有另一个数组,其中包含该国家赢得的相应总金额。这两个数组如下所示:
char countryNames[10][100] = {"Japan", "USA", "China", "ROC", "UK", "Australia",
"Kosova", "Italy", "France", "Canada"}
int totalMedals[10] = {13, 14, 18, 12, 7, 6, 2, 9, 5, 4}
所以日本赢得了 13 枚奖牌,美国赢得了 14 枚奖牌,等等。我很难找到一种方法来使用 * 以垂直直方图输出这些统计数据。这是我正在寻找的输出:
我找不到一个不是非常硬编码的解决方案。没有特定的间距,但我希望它看起来更像示例。谁能帮我做到这一点?
解决方案
您可以通过逐行输出来输出垂直直方图。
即,您必须放弃整个“垂直”的想法,并通过大量的远见将所有内容都排成一行。
基本上:
第 1 步:查找pad
,最长名称的长度。
步骤2:查找total
,条目总数。
第 3 步:创建一个以换行符和零结尾的pad * total
空白字符序列。
步骤 4:查找index
,最高数字的索引。
步骤 5:将位置处的空白更改index * pad
为'*'
。
第 6 步:查找next
,下一个最高数字的索引。
第七步:输出字符序列totalMedals[index]-totalMedals[next]
次数。
第 8 步:将值复制next
到index
.
第 9 步:从第 5 步开始重复直到完成,使用 0 作为最后一个数字。
然后您只需要根据喜好输出带有填充的名称。
这通过假设奖牌的唯一编号来简化,即没有两个具有相同的编号 - 就像您的输入数据中一样。(虽然我怀疑它实际上也可能适用于非唯一数字。)
推荐阅读
- sql-server - 为什么我的 Sql 查询第二次运行更快?
- swift - 不同的 UICollectionViewCells 具有相同的地址
- html - Laravel:查看未显示 html 数据
- jenkins - OpenShift 中的 Jenkins Pipeline 无法获取请求的存储库
- sql - 我将如何计算空值但仍指定在历史/贷款表中计数
- java - 为什么多个@ComponentScan 注释会破坏我的 AspectJ 事务?
- ios - Xcode 模拟器中的 ARC 是否存在已知问题?
- ios - 在 iOS swift3 中并行处理视频录制和电话功能
- android - 如何在 SlideUpPanelLayout 上回收视图滚动?
- javascript - Javascript CORS 请求,不存在带有 200 状态代码的“Access-Control-Allow-Origin”标头