Как мы и договорились сегодня с группой из Салавата – публикую одну, но "многометодную" задачу.
Задача, возможно, и не самая сложная)))), тем более, что часть мы сегодня сделали на занятии -- но длинная она наверняка, поэтому кроме ума, понадобится еще и много-много терпения.
Назовем ячейку массива "счастливой", если выполняются (одновременно) следующие условия:
1. Сумма значений в "строке" (то есть во внутреннем массиве, к которому относится ячейка) равна значению в данной ячейке.
2. Сумма значений в "столбце" (то есть в ячейках всех внутренних массивов – ячейках, у которых такой же порядковый номер во внутреннем массиве, как и у данной ячейки, то есть в ячейках с одинаковым индексом) равна значению в данной ячейке.
Надо написать класс, который находит все "счастливые" ячейки в массиве массивов ("двумерном") и выводит о каждой такой ячейке следующую информацию:
· ее значение;
· ее положение в массиве массивов.
Кроме того, класс должен определять, какое из значений в "счастливых" ячейках встречается чаще всего.
Разумеется, размеры массива и его содержание можно задавать по-разному: можно – через ввод параметров с клавиатуры (гибко), можно – заранее устанавливать значения… Выбирайте сами.
Я советую писать класс "по частям": проверять каждый этап и использовать как можно больше методов.
Удачи!
Этот комментарий был удален автором.
ОтветитьУдалитьimport java.util.*;
ОтветитьУдалитьclass nn2
{ static Scanner reader=new Scanner(System.in);
public static void main(String[] args)
{ int a[][]=new int[reader.nextInt()][reader.nextInt()];
int x=reader.nextInt(), y=reader.nextInt();
int k=0, t=0, n=0, max=0, r=0;
zapolni(a,x,y);
for (int i=0;i<a.length;i++)
System.out.println (Arrays.toString(a[i]));
for (int i=0;i<a.length; i++)
{ for (int j=0;j<a[i].length;j++)
if (check(a, i, j, r)==1) k++;}
if (k!=0)
{int mas[][]=new int [2][k];
for (int i=0;i<a.length; i++)
{ for (int j=0;j<a[i].length;j++)
{ r=1;
if (check(a, i, j, r)==1) {mas[0][t]=a[i][j]; t++;} } }
for (int i=0;i<mas[0].length;i++)
{ for (int j=0;j<mas[0].length;j++)
if (mas[0][i]==mas[0][j]) mas[1][i]++;}
for (int i=0;i<mas[0].length;i++)
{ max=Math.max(mas[1][i],max);
if (mas[1][i]==max) n=mas[0][i];}
System.out.println ("Чаще всего в счастливых встречается значение "+n);}}
static void zapolni(int [][] b, int m, int n)
{ for(int i=0;i<b.length;i++)
for (int j=0;j<b[i].length;j++)
b[i][j]=m+(int)(n*Math.random()); }
static int check (int [][] a, int str, int stl, int r)
{int sum1=0, sum2=0, k=0;
for (int i=0;i<a.length;i++)
{sum1=sum1+a[str][i];
sum2=sum2+a[i][stl];}
if ((sum1==a[str][stl]) && (sum2==a[str][stl]))
{ k=1;
if (r==1)
System.out.println ("Ячейка "+str+";"+stl+" со значением "+a[str][stl]);}
return k;}}