RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 817587
Accepted
Oleg Khegay
Oleg Khegay
Asked:2020-04-22 17:46:39 +0000 UTC2020-04-22 17:46:39 +0000 UTC 2020-04-22 17:46:39 +0000 UTC

带有数字的数组的直方图

  • 772

给定一个数组:mas={1, 2, 3, 4, 5, 10, 20, 24, 55, 62, 73, 74, 89, 93, 94, 95};
您需要显示一个直方图,其中每列显示每个范围内的数字数量(从 0-9、10-19、20-29 ... 90-99):

# # #  # # # # #
#   #      #   #
#              #
# 
#

我创建了一个数组,我无法正确组成一个循环。我就如何有效地处理这个问题寻求帮助或建议。

java
  • 3 3 个回答
  • 10 Views

3 个回答

  • Voted
  1. Best Answer
    Alex Novikov
    2020-04-22T18:31:13Z2020-04-22T18:31:13Z
        int[] mas = {1, 2, 3, 4, 5, 10, 20, 24, 55, 62, 73, 74, 89, 93, 94, 95};
    
        int[] gist = new int[10]; // Инициализация идет нулями
        for (int i = 0; i < mas.length; i++) {
            int vol = mas[i] / 10;
            gist[vol]++;
        }
        boolean stat = true;
        while (stat) {
            int count = 0;
            for (int i = 0; i < gist.length; i++) {
                if (gist[i] > 0) {
                    System.out.print("#");
                } else {
                    System.out.print(" ");
                }
                gist[i]--;
                if (gist[i] <= 0) {
                    count++;
                }
            }
            System.out.println();
            if (count > 9) {
                stat = false;
            }
        }
    
    • 1
  2. Askalite
    2020-04-22T19:01:18Z2020-04-22T19:01:18Z
    import java.util.*;
    import java.lang.*;
    import java.io.*;
    public class Main{
    PrintWriter pw;
    Scanner sc;
        public static void main(String[] args) throws IOException{
        new Main().run();
        }
        public void run() throws IOException{
        sc = new Scanner(new File("input.txt"));
        //new Scanner(System.in);
        int i=sc.nextInt();
        byte [] mas = new byte[i];
        i=0;
        //получаем массив mas
        while(i<mas.length){
            mas[i]=sc.nextByte();i++;
        }
        //получаем количество чисел в диапазоне (0-9, ..., 90-99)
        int[] gist=new int[10];
        for(i=0;i<gist.length;i++){
            gist[i]=getD(mas,10*i,10*i+9);
        }
        //получаем максимальную высоту колонок
        int max=getMax(gist);
        //создаём массив String для вывода
        //гистаграммы построчно
        String[] sg=new String[max];
        //Для каждой строки определяем существование
        //столбца (>0) и если существует
        //то прибавляем к строке "#" решётка, а потом
        //вычитаем столбец
        //иначе если столбец нулевой, то к строке прибавляем " " пробел
        for(i=0;i<sg.length;i++){
            sg[i]="";
            for(int j=0;j<gist.length;j++){
            if(gist[j]>0){
            sg[i]+="#";gist[j]--;
            } else if(gist[j]==0)sg[i]+=" ";
            }
        }
        //выводим гистограмму в файл
        pw = new PrintWriter(new File("output.txt"));
        //new PrintWriter(System.out);
        for(i=0;i<sg.length;i++){
            pw.println(sg[i]);
        }
        pw.close();
        }
        //[min,max]
        public int getD(byte[] mas,
                        int min,
                        int max){
        int d=0;
        for(int i=0;i<mas.length;i++){
            if((min<=mas[i])&&(mas[i]<=max))d++;
        }
        return d;
        }
        public int getMax(int[] gist){
        int max=0;
        for(int i=0;i<gist.length;i++){
            if(gist[i]>max)max=gist[i];
        }
        return max;
        }
    }
    

    在 input.txt 中,首先输入数组的长度,然后输入数组本身。

    • 1
  3. УАСЯ
    2020-04-23T15:25:05Z2020-04-23T15:25:05Z
        public static void main(String[] args){
        int[] arr = {5, 15, 4, 16, 25, 17};
    
        ArrayList n10 = new ArrayList();
        ArrayList n20 = new ArrayList();
        ArrayList n30 = new ArrayList();
    
        for(Integer x: arr){
            if(x<9){
                n10.add(x);
            }
            else if(x>9 && x<=19){
                n20.add(x);
            }
            else if(x>19 && x<=29){
                n30.add(x);
            }
        }
    
    
        for(int x=0; x<5; x++){
            if(x <= (n10.size()-1)){
                System.out.print(n10.get(x) + " ");
            }else{
                System.out.print("* ");
            }
    
            if(x <= (n20.size()-1)){
                System.out.print(n20.get(x) + " ");
            }else{
                System.out.print("* ");
            }
    
            if(x <= (n30.size()-1)){
                System.out.print(n30.get(x) + " ");
            }else{
                System.out.print("* ");
            }
    
            System.out.println();
        }
    
        }
    

    查找所需范围的元素很容易。但是以直方图的形式显示所有这些会更有趣。PS所有这些面条都可以通过方法分解。

    • 0

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5