【问题标题】:Vertical histogram in C [duplicate]C中的垂直直方图[重复]
【发布时间】:2014-11-15 08:55:06
【问题描述】:

我的作业任务是编写一个 C 程序,该程序从用户那里获取 4 个数字并垂直打印出相应的直方图(列彼此相邻)。

示例: A = 5 B = 3 C = 1 D = 0

输出:

x  
x     
xx   
xx   
xxx  
ABCD

我不允许使用数组或 simpleio 之外的任何东西。

我的理解是我需要按行而不是按列进行思考,并且我的起点应该是数量最多的行,并且一旦开始就会继续打印。

除此之外,我只是在寻找某种起点或提示如何正确考虑这一点。任何帮助是极大的赞赏。谢谢!

【问题讨论】:

  • 告诉我们你做了什么,因为没有人会做你的作业,你的输出根本没有意义?!!!
  • “在 simpleio 之外”是什么意思?什么是'simpleio'?知道为什么不允许使用数组,因为数组会使工作更容易。
  • 很抱歉。 Simpleio 是一个库,我将使用它的唯一目的是从用户那里获取一个整数。乔纳森,我不允许使用它们。因为此时类中还没有涉及到数组。
  • 从输入值中求最大值后的简单循环。
  • 您大概可以将 I/O 抽象为一段代码,该代码将调用诸如 void print_4_column_histogram(int a, int b, int c, int d) 之类的函数,该函数将执行打印。我认为,您将需要确定 4 个整数的最大值,然后对于从该数字到 1 的每一行,您将安排为 4 列中的每一列打印一个空白或一个“x” ,后跟换行符。然后打印“ABCD”作为最后一行。例如,您可能想要验证数字是否在 0..99 范围内,但这可能是 I/O 问题,而不是打印功能的问题。

标签: c loops histogram


【解决方案1】:
#include <stdio.h>

#define print(VAR) (i<=VAR ? 'x' : ' ')

int main(void){
    int A=5, B=3, C=1, D=0;
    int MAX = 5;//int MAX=0;scanf("%d", &A); if(A>MAX) MAX=A;...
    int i;
    for(i=MAX;i>0;i--)
        printf("%c%c%c%c\n", print(A), print(B), print(C), print(D));
    printf("ABCD\n");
    return 0;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    相关资源
    最近更新 更多