среда, 25 января 2012 г.

Массив массивов


В языке Java не совсем правильно пользоваться термином "двумерный массив", потому что такая конструкция в Java совершенно не обязательно "прямоугольная". Так что гораздо правильнее использовать термин "массив массивов", то есть массив, каждая ячейка которого содержит массив.
Разумеется, для таких элементов использование методов становится еще более актуальным – и для начала предлагаю несколько не очень сложных задач.

Задание №1
Напишите класс, который гибко создает массив массивов (попробуйте, кстати, использовать для этого случайные числа, мы, кажется, этого еще не делали) и затем заполняет его. Разумеется, после заполнения его надо вывести на экран.

Задание №2
Сделайте все, как в предыдущей задаче, а затем для каждого "внутреннего" массива найдите сумму его значений, и укажите ее при построчной выводе массивов на экран.

Задание №3
И снова повторите создание и заполнение массива массивов, а затем для каждого "внутреннего" массива найдите максимальное значение, которое, разумеется, тоже надо вывести на экран – рядом с построчным выводом "внутренних" массивов.

Задание №4
Заполнить массив массивов – и найти максимальное число, в нем содержащееся, а также указать, где оно в массиве массивов расположено.

7 комментариев:

  1. import java.util.*;
    class n1
    { 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();
    zapolni(a,x,y);
    for (int i=0;i<a.length;i++)
    System.out.println (Arrays.toString(a[i])); }
    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()); }}

    ОтветитьУдалить
  2. import java.util.*;
    class n2
    { 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();
    zapolni(a,x,y);
    for (int i=0;i<a.length;i++)
    { System.out.println (Arrays.toString(a[i]));
    System.out.println(summa(a[i])); } }
    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 summa(int []c)
    { int sum=0;
    for (int i=0;i<c.length;i++)
    sum=sum+c[i];
    return sum; }}

    ОтветитьУдалить
  3. Этот комментарий был удален автором.

    ОтветитьУдалить
  4. import java.util.*;
    class n2
    { 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();
    zapolni(a,x,y);
    for (int i=0;i<a.length;i++)
    { System.out.println (Arrays.toString(a[i]));
    System.out.println(maximum(a[i])); } }
    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 maximum(int []c)
    { int max=c[0];
    for (int i=0;i<c.length;i++)
    max=Math.max(c[i],max);
    return max; }}

    ОтветитьУдалить
  5. import java.util.*;
    class n2
    {
    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();
    zapolni(a,x,y);
    for (int i=0;i<a.length;i++)
    System.out.println (Arrays.toString(a[i]));
    System.out.println(Arrays.toString(maximum(a))); }
    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[] maximum(int [][]c)
    { int k[]=new int [3];
    int max=c[0][0];
    for (int i=0;i<c.length;i++)
    for (int j=0;j<c[i].length;j++)
    { max=Math.max(c[i][j],max);
    if (c[i][j]==max)
    { k[0]=max;
    k[1]=i;
    k[2]=j; } }
    return k; }}

    ОтветитьУдалить
  6. Названия двух последних классов не соответствуют номеру задач, извиняюсь. Решения опубликованы по порядку

    ОтветитьУдалить
  7. Замечательно, просто слов других нет, честно.
    использую твои, Аня, решения, в задачнике, который мы готовим к выпуску.

    ОтветитьУдалить