Class primer_array8

{

static Scanner reader = new Scanner(System.in);

public static void main(String[] args)

{

int [] b=new int[reader.nextInt()];

b=fillArr(b.length);

printArr(b);

if (is_balance(b)==true) System.out.println("Yes");

else System.out.println("No");

}

public static boolean is_balance(int[] c)

/**

Состояние входа: метод получает массив целых чисел

Состояние выхода: метод возвращает значение true, если записанное в нем условие выполняется; в противном случае метод возвращает значение false

*/

{

if (countArr(0,c)==countArr(1,c)) return true;

else return false;

}

public static int countArr(int x, int[] c)

/**

Состояние входа: метод получает целочисленное значение и одномерный массив

Состояние выхода: метод возвращает либо количество четных значений в массиве (если целочисленный параметр равен 0), либо количество нечетных значений в массиве (если целочисленный параметр равен 1)

*/

{

int count=0;

for (int i=0; i<c.length; i++)

if (c[i]%2==x) count++;

return count;

}

public static void printArr (int[] c)

/**

Состояние входа: метод получает одномерный массив

Состояние выхода: метод выводит на экран значения массива – в одной строке с пробелами и текстом End of array в конце строки

*/

{

for (int i=0; i<c.length; i++)

System.out.print(c[i]+" ");

System.out.println(" End of array");

}

public static int[] fillArr (int x)

/**

Состояние входа: метод получает целочисленное значение, равное размеру массива

Состояние выхода: метод возвращает массив, заполненный случайными числами из диапазона [0;9]

*/

{

int [] c=new int[x];

for (int i=0; i<c.length; i++)

c[i]=(int)(10*Math.random());

printArr(c);

return c;

}

}

 

 


 

Раздел №24 (часть 1).
Массивы счетчиков

В одной из предыдущих тем мы рассматривали использование счетчиков, то есть переменных, которые позволяют подсчитать количество каких-то значений, случаев, наступления или не-наступления каких-то определенных ситуаций.

 

Например:

· Количество четных значений в серии чисел

· Число неудовлетворительных оценок, полученных за контрольную работу

· Количество максимальных значений в массиве целых чисел

 

Однако использовать переменную-счетчик удобно только в том случае, если надо подсчитать один или два варианта значений: четные или нечетные значения, удовлетворительная или не удовлетворительная оценка, максимальное или не максимальное значение.

 

А вот если надо определить и подсчитать гораздо больше вариантов, то ситуация заметно осложняется: например, если надо определить количество каждой цифры в серии целочисленных значений. В этом случае нам понадобятся 10 счетчиков: по одному на каждую цифру. И в этой ситуации естественный выход заключается в том, чтобы использовать массив, каждая ячейка которого станет выполнять роль переменной-счетчика.

 

Такие массивы называются массивами счетчиков.

 

Рассмотрим пример: "Напишите класс, который генерирует серию из 100 случайных чисел из диапазона [0;9] и определяет, сколько раз каждое число встречалось в этой серии."

 

Для решения воспользуемся массивом счетчиков размером 10, так что в каждой ячейке в результате должно быть записано значение, соответствующее ответу на вопрос: "Сколько раз в серии было сгенерировано число, равное индексу ячейки?".

 

Иными словами, если по окончании генерации серии в ячейке с индексом, например, 3 будет записано значение 17, это будет означать, что число 3 было сгенерировано 17 раз.

 

Для этого каждое сгенерированное случайное значение будет указывать на индекс той ячейки, в которой надо будет увеличить значение на 1, то есть каждая ячейка массива будет использоваться точно в соответствии с правилами использования переменных-счетчиков.

 

Разумеется, нам надо будет в самом начале обнулить весь массив, и это опять же в соответствии с правилом "перед началом подсчета поставь счетчик в значение 0".

 

Таким образом, в нашем классе мы может использовать методы для следующих действий:

· Обнуления массива счетчиков

· Генерацию серии с одновременным изменением значений в соответствующих ячейках массива счетчиков

· Вывод состояния массива счетчиков на экран

 

Решение может выглядеть так:

 

import java.util.*;