Дан массив: 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):
# # # # # # # #
# # # #
# #
#
#
Создал массив, не могу правильно составить цикл. Прошу о помощи или о совете как граммотно подойти к этому вопросу.
int[] gist = new int[10]; // Инициализация идет нулями
for (int i = 0; i < mas.length; i++) {
if (mas[i] < 10) {
gist[0]++;
continue;
}
if (mas[i] < 20) {
gist[1]++;
continue;
}
............ и т.д. перебор значений
if (mas[i] < 100) {
gist[9]++;
continue;
}
}
// На выходе будет массив с количеством каждого типа элементов
И есть короче вариант
int[] gist = new int[10]; // Инициализация идет нулями
for (int i = 0; i < mas.length; i++) {
int vol = mas[i]/10;
gist[vol]++;
}
import java.util.*;
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(int i=0;i<gist.length;i++){
gist[i]=getD(mas,i*10,i*10+9);
}
//получаем максимальную высоту колонок
int max=getMax(gist);
//создаём массив String для вывода
//гистаграммы построчно
String[] sg=new String[max];
//Для каждой строки определяем существование
//столбца (>0) и если существует
//то прибавляем к строке "#" решётка, а потом
//вычитаем столбец
//иначе если столбец нулевой, то к строке прибавляем " " пробел
for(int i=0;i<sg.length;i++){
for(int j=0;j<gis.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(int i=0;i<sg.length;i++){
pw.println(sg[i]);
}
pw.close();
}
//[min,max]
public int getD(byte[] mas,
byte min,
byte 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;
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Подскажите пожалуйстаНужно сделать выборку с бд при это название таблицы, откуда делается выборка, образуется исходя из префикса таблицы...
Есть две таблицы, они связаны между собой один ко многимТаблица client содержит первичный ключ ID, а таблица orders содержит внешний ключ ID_of_client