| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1691 人关注过本帖
标题:大佬们帮忙看看是哪里有问题吧(显示柱状图)感激不尽!
取消只看楼主 加入收藏
Sopphhiiaa
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2020-12-7
结帖率:80%
收藏
已结贴  问题点数:10 回复次数:3 
大佬们帮忙看看是哪里有问题吧(显示柱状图)感激不尽!
描述
根据输入的数字和符号生成相应的柱状图显示。
输入
每个输入包含一个测试用例,第一个整数m(1<=m<=20),表示随后有m组数据,每组数据由一个数字n(-15<=n<=15)和一个字符组成,每组数据之间用空格分隔。数字代表柱状图的高度,字母代表该柱使用的画图符号。如果数字后没有字母,默认该柱的画图符号使用加号’+’。
输出
每个柱之间用1个空格间隔,图的空白处用空格填充。用减号’-’表示x轴。正数柱状向上,负数柱状向下。
样例
输入
6 1a 3 4b 2 -2 1
输出

    b      
  + b      
  + b +   
a + b +   +
-----------
        +  
        +
程序代码:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    int m,i;
    scanf("%d",&m);//输入一个整数 
    char histogram[21][31];//声明一个名为柱状图的字符型数组 
    char str[20];//声明存入字母的数组 
    int num[20];//声明存入数字的数组 
    if(1<=m<=20){
        for(i=0;i<m;i++){//将数据存入数组中 
            scanf("%d",&num[i]);
            scanf("%c",&str[i]);
            }
        int shang,xia;//shang表示x轴上方的行数,xia表示x轴下方的行数 
        shang=0;
        xia=0;
        for(i=0;i<m;i++){
        
            if(num[i]>0&&shang<num[i]){
                shang=num[i];//找出上方应该有的行数 
            }
            else if(num[i]<=0&&xia>num[i]){
                xia=num[i];//找出下方应该有的行数 
            }
         }
        
        int hang,lie;
        hang=shang-xia+1;//总的行数 
        lie=m;//总的列数 
        int j;
        for(j=0;j<lie;j++){//一列一列的看,先对列进行循环 
            if(num[j]>0){//讨论在数字大于零时的情况 
                for(i=0;i<hang;i++){//再对行进行循环 
                    if(i<shang-num[j]){//x轴上方为空格的情况 
                        histogram[i][j]=' ';
                    }
                    else if(i>=shang-num[j]&&i<shang){ 
                        if(str[j]==' '||str[j]=='\n'){//数字后不带字母的情况
                            histogram[i][j]='+';
                        }
                        else//数字后带字母的情况 
                            histogram[i][j]=str[j];
                    }
                    else if(i==shang)//x轴 
                        histogram[i][j]='-';
                    else//在x轴下方为空格的情况 
                        histogram[i][j]=' ';
                }
                
            }
            else if(num[j]>=0) {//讨论数字小于等于零时的情况 
                for(i=0;i<hang;i++){
                    if(i<shang){//因数字小于零,在x轴上方都是空格 
                        histogram[i][j]=' ';
                    }
                    else if(i==shang)//x轴 
                        histogram[i][j]='-';
                    else if(i>shang&&i<=shang-num[j]){
                        if(str[j]==' '||str[j]=='\n'){//数字后无字母 
                            histogram[i][j]='+';
                        }
                        else//数字后有字母 
                            histogram[i][j]=str[j];
                    }
                    else//在这列中的其他行是空格 
                        histogram[i][j]=' ';
                }
            }
        }
        for(i=0;i<shang;i++){
             if(i==shang){
                 for(j=0;j<lie;j++)
                     {
                     if(j==lie-1)
                       {
                       printf("%c",histogram[i][j]);}
                    else
                       {
                       printf("%c-",histogram[i][j]);}
                    }
        }
             else
                {
                 for(j=0;j<lie;j++)
                    {
                      printf("%c ",histogram[i][j]);}
                }
            printf("\n");
        }
    }
    return 0;
    
         
    
}

我的运行结果如下:
6 1a 3 4b 2 -2 1
    b
  + b
  + b +
a + b + ?+
麻烦帮我看看到底是哪里出了错,已经想了很久了,可是运行结果就是不对  
搜索更多相关主题的帖子: for num str 数字 字母 
2020-12-19 23:07
Sopphhiiaa
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2020-12-7
收藏
得分:0 
样例输出的格式有点不对,我贴一张图
图片附件: 游客没有浏览图片的权限,请 登录注册

下面是我运行的结果
图片附件: 游客没有浏览图片的权限,请 登录注册
2020-12-19 23:12
Sopphhiiaa
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2020-12-7
收藏
得分:0 
回复 4楼 do8do8do8
我发现我就是x轴和x轴下方的显示不出来,可是在代码中又确实检查不出来哪里有错误(另外把if中num[j]改成<=0了 运行结果仍然有错)

[此贴子已经被作者于2020-12-20 11:43编辑过]

2020-12-20 11:41
Sopphhiiaa
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2020-12-7
收藏
得分:0 
回复 7楼 do8do8do8
我明白了 应该写成i<hang 而不是<shang
2020-12-20 14:37
快速回复:大佬们帮忙看看是哪里有问题吧(显示柱状图)感激不尽!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025008 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved