SlideShare a Scribd company logo
Массивы в Java
Обсуждаемые вопросы
 Определение и характеристики массива
 Принципы работы с массивами
 Объявление (декларация)
 Создание (выделение памяти)
 Инициализация массивов
 Типовые алгоритмы обработки одномерных
  массивов
 Двухмерные массивы
 Непрямоугольные двухмерные массивы

                                           2
Определение и характеристики
 Массив - группа элементов одного
  типа, имеющих одно имя и различающихся по
  номеру элемента внутри массива – индексу
 Массивы в Java являются объектами встроенного
  класса, => они имеют ряд атрибутов и
  методов, облегчающих работу с ними и
  предоставляющих дополнительные возможности
 Характеристики массива:
   Мерность (количество измерений)
     Одномерные массивы (векторы)
     Двухмерные массивы (матрицы)
     Многомерные массивы

   Размер (кол-во элементов) каждого измерения

                                                  3
Принципы работы
 Объявление переменной-ссылки на массив
  (декларация)
 Создание объекта-массива (выделение памяти)
 Инициализация (присвоение начальных значений)
 Обработка (обращение к элементам)




                                                  4
Объявление
 Синтаксис объявления массива
  Тип[] имя;     или   Тип имя[];

 Например, одномерный массив целых чисел:
  int[] iData;   или   int iData[];

 Если переменная объявлена, но ещё не
  инициализирована, выделение памяти под массив
  не производится
 => Указывать размер массива на этом этапе нельзя
 Создаётся переменная, кот. в будущем будет
  содержать ссылку на массив создаваемый
  динамически

                                                     5
Создание (выделение памяти)
 Синтаксис:
    Имя = new Тип [размер];
 Пример – создание массива целых чисел из 10 элем.:
    iData= new int [10];
 В отличие от локальных переменных, элементы массивов
 примитивных типов инициализируются значениями по
 умолчанию
   Числовые элементы – нулями
   Символьные – значением ‘0’ (нулевой символ)
   Логические – значением false
   Массивы объектов – значениями null
 Можно создать массив сразу при его определении:
   Int n = getSize();
   Int []iData= new int [n];
                                                         6
Обработка
 Массивы обрабатываются не целиком, а поэлементно
 Доступ к элементу массива осуществляется по его индексу
    (номеру)
   Как правило, доступ к элементам массива осуществляется в
    цикле
   Начальный элемент массива в Java имеет номер 0
   Конечный элемент массива из N элементов имеет номер N-1
   Например:
    boolean[] barr = new boolean[3];         flag будет иметь
    boolean flag = barr[0];                  значение false

    int[] arr = new int[3];                  a будет иметь
    Int a = arr[0];                          значение 0

    Напоминание: локальные переменные, в отличие от элементов
    массива, не инициализируются по умолчанию. Во избежание ошибок
    при компиляции они должны быть инициализированы явно.
                                                                     7
Инициализация
 При создании переменной-ссылки на массив
 можно явно произвести его инициализацию, что
 приведёт к созданию массива, выделению
 необходимого объёма памяти и размещению в ней
 заданных значений:
 int a[] = new int[] {5, 7, 9};
 int temper[] = {25,28,31,26,33,30,32,24,30,32};

 Массив temper будет состоять из 10-ти элементов и
 занимать в памяти 40 байт
 Примечание: в Java любая инициализация переменных выполняется на
 этапе выполнения, а не компиляции. Поэтому для инициализации
 можно использовать не только литеральные константы, но и переменные
 и значения выражений.

                                                                       8
Типовые алгоритмы обработки
 Присвоение начальных значений или генерация
  значений элементов случайным образом
 Поиск элемента массива и его номера
   Максимальный
   Минимальный
   Заданный
 Обработка значений
   Вычисление суммы, разности, произведения,
    среднего арифметического и т.п.
       безусловное и условное вычисление
 Сортировка элементов массива (упорядочение)
 Перестановка элементов массива

                                                9
Пример обработки
Подсчёт среднего арифметического температуры

int temper[] = {25,28,31,26,33,30,32,24,30,32};

double avg;
int sum = 0;
int n = temper.length;
for (int i = 0; i < n; i++) {
       sum += temper[i];
}

avg = (double)sum / n;




                                                  10
Проход по всем элементам
 В Java есть специальная форма цикла for, которая
 упрощает полный перебор всех элементов массива или
 коллекции
   for (Тип Имя_Переменной : Имя_массива) {
          тело цикла;
   }

 Например:
   for (int t : temper) {
          sum += t;
   }
 В некоторых других языках (Perl, PHP, VB и др.) подобный
  цикл записывается как «for each» («для каждого
  элемента»)
 Отсутствие счётчика делает применение этого вида цикла
  ограниченным                                         11
Свойство length
 Для прохода по всем элементам массива можно
 использовать цикл со счётчиком for, используя в
 качестве верхней границы свойство объекта-
 массива length:
 for (int i = 0; i < temper.length; i++) {
        sum += temper[i];
 }


 Использование свойства length делает программу
  более универсальной и не зависящей от
  конкретного значения размера массива
 Использование этого свойства предпочтительно

                                                   12
Двухмерные массивы
 Создание и инициализация двухмерного массива:
 public class Matr {
 public static void main(String[] args) {
  double a[][] = { { 1.0, 9.0, 3.1 },
                   { 0.2, 1.0, 5.8 },
                   { 3.7, 0.4, 1.0 } };
  for( int i=0; i < 3; i++ ) {
      String s = "";
      for( int j=0; j < 3; j++ ) {
                s += (" "+a[i][j]);
       }
      System.out.println( s );
    }
  }
 }


                                                  13
Непрямоугольные массивы
 В Java разные измерения одного и того же массива
  могут иметь разные размеры
 Пример: создание треугольного массива:
int[][] arr;
       arr = new int[3][];     // это ошибка: new int[][3]
       arr[0] = new int[1];
       arr[1] = new int[2];
       arr[2] = new int[3];
 for( i = 0; i < 3; i++ )
   for( int j=0; j <= i; j++ ) arr[i][j] = j;

 String s = "";
 for( i = 0; i < 3; i++ ) {
      s = "";
      for(int j = 0; j <= i; j++ ) s += (arr[i][j]+"   ");
      System.out.println( s );
  }
                                                             14
Выход за границы массива
 Во время выполнения приложения виртуальная
  машина Java отслеживает выход за границы массива.
 Если приложение пытается выйти за границу
  массива, генерируется исключение
  java.lang.ArrayIndexOutOfBoundsException




                                                 15
Копирование массивов
 Если присвоить одной переменной-ссылке на
    массив другую переменную-ссылку на массив, то
    будет скопирован только адрес массива:
   int[] a = new int [3]; int[] b = a;
   Если изменить элемент массива b, то это скажеться
    и на массиве а, т.к. эти переменные-ссылки
    указывают на один и тот же массив.
   Скопировать значения элементов массива можно в
    цикле
   Есть системный метод копирования массивов:
   System.arraycopy(a, index1a, b, index1b, count);
   Из а в b копируются count элементов начиная с
    индекса index1a в массиве а. Они размещаются в
    массиве b начиная с индекса index1b.
                                                        16
Методы обработки массивов
 Используется класс Arrays из пакета java.util (т.е.
    нужно импортировать этот пакет: import java.util.*)
   Arrays.fill(mas, znach) – заполняет массив
    одинаковыми значениями znach
   Arrays.equals(a, b) – сравнивает два массива по
    элементам. (Сравнивать a == b нельзя, т.к. будут
    сравниваться адреса массивов, а не значения)
   Arrays.sort(a) – сортирует массив
   И др.




                                                          17
Рассмотрены вопросы:
 Определение и характеристики массива
 Принципы работы с массивами
 Объявление (декларация)
 Создание (выделение памяти)
 Инициализация массивов
 Типовые алгоритмы обработки одномерных
  массивов
 Двухмерные массивы
 Непрямоугольные двухмерные массивы

                                           18
Комментарии к заданиям
 Каждое задание состоит из нескольких частей в
  порядке возрастания их сложности
 Вы можете выполнить несколько заданий по
  одному пункту, либо все пункты одного задания и
  т.д. в зависимости от вашего уровня
 Не обязательно делать все задания!




                                                    19
Задания
 В одномерном массиве, состоящем из п
    вещественных элементов, вычислить:
   1) сумму отрицательных элементов массива;
   2) произведение элементов массива,
    расположенных между максимальным и ми­
   нимальным элементами.
   Упорядочить элементы массива по возрастанию.




                                                   20
Задания
 в одномерном массиве, состоящем из п целых
    элементов, вычислить:
   1) произведение элементов массива с четными
    номерами;
   2) сумму элементов массива, расположенных между
    первым и последним нуле­
   выми элементами.
   Преобразовать массив таким образом, чтобы сначала
    располагались все положи­
   тельные элементы, а потом — все отрицательные
    (элементы, равные О, считать
   положительными).

                                                        21
Задания
 в одномерном массиве, состоящем из п вещественных
    элементов, вычислить:
   1) максимальный элемент массива; Упражнения к
    части I 1 3 7
   2) сумму элементов массива, расположенных до
    последнего положительного эле­
   мента.
   Сжать массив, удалив из него все элементы, модуль
    которых находится в интер-
   вале [а,Ь]. Освободившиеся в конце массива элементы
    заполнить нулями.

                                                          22
Задания
 в одномерном массиве, состоящем из п целых
    элементов, вычислить:
   1) минимальный по модулю элемент массива;
   2) сумму модулей элементов
    массива, расположенных после первого элемента,
   равного нулю. 1 3 8 Часть I. Структурное
    программирование
   Преобразовать массив таким образом, чтобы в первой
    его половине располага-
   лись элементы, стоявшие в четных позициях, а во
    второй половине — элементы,
   стоявшие в нечетных позициях.

                                                     23
Задания
 Дана целочисленная прямоугольная матрица.
  Определить:
 1) количество строк, не содержащих ни одного
  нулевого элемента;
 2) максимальное из чисел, встречающихся в
  заданной матрице более одного раза.




                                                 24
Задания
 Дана целочисленная прямоугольная матрица.
  Определить:
 1) количество столбцов, содержащих хотя бы один
  нулевой элемент;
 2) номер строки, в которой находится самая
  длинная серия одинаковых элементов.




                                                    25

More Related Content

PPTX
Базовые операторы Java
PDF
Глава 3: примитивные типы и операции с ними в Java
PDF
Глава1: Обзор технологии Java
PPT
Java. Логические операторы, операторы ветвления.
PPT
Java. Cистемы счислния, битовые операции
PPT
Java. Переменные, типы данных, операторы
PPT
PPT
Neopredelennyj integral
Базовые операторы Java
Глава 3: примитивные типы и операции с ними в Java
Глава1: Обзор технологии Java
Java. Логические операторы, операторы ветвления.
Java. Cистемы счислния, битовые операции
Java. Переменные, типы данных, операторы
Neopredelennyj integral

What's hot (20)

PPTX
Razbiraemsya s preobrazovaniem_tipov
PPTX
десант презентация
PPT
Java. Полиморфизм.
PPTX
OOP in JavaScript - Presentation by Eugene Kalosha
PPT
Java. Методы
PPT
Java. Generic - шаблонные типы.
PDF
Discovering Lambdas in Java 8
PPT
Msu.Center.Lectures.J01 Introducing Java
PDF
fp intro
PPT
Практикум по выполнению блока с информатика
PPT
01 - Знакомство с Java
PDF
ук 03.001.02 2011
PDF
моап 2011 04
PPT
Java. Введение в коллекции. Классы обертки. Перечисленияю
PPS
javascript_part1
PDF
Дмитрий Васильев Dart for js devs
PPT
Java. Строки. Класс String.
PPTX
PDF
Вторая лекция по основам ruby для студентов itc73.ru
PPT
Java. Вложенные классы и интерфейсы.
Razbiraemsya s preobrazovaniem_tipov
десант презентация
Java. Полиморфизм.
OOP in JavaScript - Presentation by Eugene Kalosha
Java. Методы
Java. Generic - шаблонные типы.
Discovering Lambdas in Java 8
Msu.Center.Lectures.J01 Introducing Java
fp intro
Практикум по выполнению блока с информатика
01 - Знакомство с Java
ук 03.001.02 2011
моап 2011 04
Java. Введение в коллекции. Классы обертки. Перечисленияю
javascript_part1
Дмитрий Васильев Dart for js devs
Java. Строки. Класс String.
Вторая лекция по основам ruby для студентов itc73.ru
Java. Вложенные классы и интерфейсы.
Ad

Viewers also liked (19)

PPTX
Классы и объекты в Java
PDF
Готовимся к Java SE 7 Programmer: от новичка до профессионала за 45 дней
PDF
Excelsior JET в действии
PPS
Exceptions
PPTX
Java Core. Lecture# 3. Part# 2. Exceptions.
PDF
ABOUT PACKAGES
PPT
Java. Lecture 05. Handling Exceptions and Debugging
PPTX
Java Core. Lecture#6. Part#1. Generics.
PPTX
Async clinic by by Sergey Teplyakov
PPTX
Коллекции в Java
PPTX
Работа с БД в Java
PPTX
Создание графического интерфейса пользователя мобильных Android приложений (ч...
PPTX
кобзар
PPTX
Как улучшить результаты, используя софт для рекрутинга
PPTX
урок ц о
PPT
Maven как средство сборки проекта
PDF
JavaFX Real-World Apps
PDF
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Классы и объекты в Java
Готовимся к Java SE 7 Programmer: от новичка до профессионала за 45 дней
Excelsior JET в действии
Exceptions
Java Core. Lecture# 3. Part# 2. Exceptions.
ABOUT PACKAGES
Java. Lecture 05. Handling Exceptions and Debugging
Java Core. Lecture#6. Part#1. Generics.
Async clinic by by Sergey Teplyakov
Коллекции в Java
Работа с БД в Java
Создание графического интерфейса пользователя мобильных Android приложений (ч...
кобзар
Как улучшить результаты, используя софт для рекрутинга
урок ц о
Maven как средство сборки проекта
JavaFX Real-World Apps
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Ad

Similar to Массивы в Java (20)

PPTX
Массыви в Python. Основы использование массива
PPT
Java. Массивы. Многомерные массивы.
PPTX
Основы языка питон. История языка питон.
PPTX
PDF
Ruby: работа с массивами
PDF
C++ Базовый. Занятие 05.
PPTX
одномерные массивы
PPTX
PPSX
PPTX
Одномерные массивы
PPT
04 array
PPT
Одномерные массивы целых чисел
PPTX
Одномерные массивы в с++
PPT
291 цикл уроков на тему массивы
PDF
PPT
2. java lecture syntax
PPT
Массивы
PPTX
Алгоритмы и структуры данных весна 2014 лекция 1
Массыви в Python. Основы использование массива
Java. Массивы. Многомерные массивы.
Основы языка питон. История языка питон.
Ruby: работа с массивами
C++ Базовый. Занятие 05.
одномерные массивы
Одномерные массивы
04 array
Одномерные массивы целых чисел
Одномерные массивы в с++
291 цикл уроков на тему массивы
2. java lecture syntax
Массивы
Алгоритмы и структуры данных весна 2014 лекция 1

More from metaform (9)

PPTX
Приступаем к разработке Android приложений
PPTX
работа с потоками ввода вывода
PPTX
обработка исключений в Java
PPTX
Классы и объекты в Java
PPTX
создание живых сайтов
PPTX
Составление резюме
PPTX
Лекция 6_принципы ООП : инкапсуляция, наследование
PDF
Глава 2: Среда разработки NetBeans
PPT
Мастерство речи, искусство презентации
Приступаем к разработке Android приложений
работа с потоками ввода вывода
обработка исключений в Java
Классы и объекты в Java
создание живых сайтов
Составление резюме
Лекция 6_принципы ООП : инкапсуляция, наследование
Глава 2: Среда разработки NetBeans
Мастерство речи, искусство презентации

Массивы в Java

  • 2. Обсуждаемые вопросы  Определение и характеристики массива  Принципы работы с массивами  Объявление (декларация)  Создание (выделение памяти)  Инициализация массивов  Типовые алгоритмы обработки одномерных массивов  Двухмерные массивы  Непрямоугольные двухмерные массивы 2
  • 3. Определение и характеристики  Массив - группа элементов одного типа, имеющих одно имя и различающихся по номеру элемента внутри массива – индексу  Массивы в Java являются объектами встроенного класса, => они имеют ряд атрибутов и методов, облегчающих работу с ними и предоставляющих дополнительные возможности  Характеристики массива:  Мерность (количество измерений)  Одномерные массивы (векторы)  Двухмерные массивы (матрицы)  Многомерные массивы  Размер (кол-во элементов) каждого измерения 3
  • 4. Принципы работы  Объявление переменной-ссылки на массив (декларация)  Создание объекта-массива (выделение памяти)  Инициализация (присвоение начальных значений)  Обработка (обращение к элементам) 4
  • 5. Объявление  Синтаксис объявления массива Тип[] имя; или Тип имя[];  Например, одномерный массив целых чисел: int[] iData; или int iData[];  Если переменная объявлена, но ещё не инициализирована, выделение памяти под массив не производится  => Указывать размер массива на этом этапе нельзя  Создаётся переменная, кот. в будущем будет содержать ссылку на массив создаваемый динамически 5
  • 6. Создание (выделение памяти)  Синтаксис: Имя = new Тип [размер];  Пример – создание массива целых чисел из 10 элем.: iData= new int [10];  В отличие от локальных переменных, элементы массивов примитивных типов инициализируются значениями по умолчанию  Числовые элементы – нулями  Символьные – значением ‘0’ (нулевой символ)  Логические – значением false  Массивы объектов – значениями null  Можно создать массив сразу при его определении: Int n = getSize(); Int []iData= new int [n]; 6
  • 7. Обработка  Массивы обрабатываются не целиком, а поэлементно  Доступ к элементу массива осуществляется по его индексу (номеру)  Как правило, доступ к элементам массива осуществляется в цикле  Начальный элемент массива в Java имеет номер 0  Конечный элемент массива из N элементов имеет номер N-1  Например: boolean[] barr = new boolean[3]; flag будет иметь boolean flag = barr[0]; значение false int[] arr = new int[3]; a будет иметь Int a = arr[0]; значение 0 Напоминание: локальные переменные, в отличие от элементов массива, не инициализируются по умолчанию. Во избежание ошибок при компиляции они должны быть инициализированы явно. 7
  • 8. Инициализация  При создании переменной-ссылки на массив можно явно произвести его инициализацию, что приведёт к созданию массива, выделению необходимого объёма памяти и размещению в ней заданных значений: int a[] = new int[] {5, 7, 9}; int temper[] = {25,28,31,26,33,30,32,24,30,32};  Массив temper будет состоять из 10-ти элементов и занимать в памяти 40 байт Примечание: в Java любая инициализация переменных выполняется на этапе выполнения, а не компиляции. Поэтому для инициализации можно использовать не только литеральные константы, но и переменные и значения выражений. 8
  • 9. Типовые алгоритмы обработки  Присвоение начальных значений или генерация значений элементов случайным образом  Поиск элемента массива и его номера  Максимальный  Минимальный  Заданный  Обработка значений  Вычисление суммы, разности, произведения, среднего арифметического и т.п.  безусловное и условное вычисление  Сортировка элементов массива (упорядочение)  Перестановка элементов массива 9
  • 10. Пример обработки Подсчёт среднего арифметического температуры int temper[] = {25,28,31,26,33,30,32,24,30,32}; double avg; int sum = 0; int n = temper.length; for (int i = 0; i < n; i++) { sum += temper[i]; } avg = (double)sum / n; 10
  • 11. Проход по всем элементам  В Java есть специальная форма цикла for, которая упрощает полный перебор всех элементов массива или коллекции for (Тип Имя_Переменной : Имя_массива) { тело цикла; }  Например: for (int t : temper) { sum += t; }  В некоторых других языках (Perl, PHP, VB и др.) подобный цикл записывается как «for each» («для каждого элемента»)  Отсутствие счётчика делает применение этого вида цикла ограниченным 11
  • 12. Свойство length  Для прохода по всем элементам массива можно использовать цикл со счётчиком for, используя в качестве верхней границы свойство объекта- массива length: for (int i = 0; i < temper.length; i++) { sum += temper[i]; }  Использование свойства length делает программу более универсальной и не зависящей от конкретного значения размера массива  Использование этого свойства предпочтительно 12
  • 13. Двухмерные массивы  Создание и инициализация двухмерного массива: public class Matr { public static void main(String[] args) { double a[][] = { { 1.0, 9.0, 3.1 }, { 0.2, 1.0, 5.8 }, { 3.7, 0.4, 1.0 } }; for( int i=0; i < 3; i++ ) { String s = ""; for( int j=0; j < 3; j++ ) { s += (" "+a[i][j]); } System.out.println( s ); } } } 13
  • 14. Непрямоугольные массивы  В Java разные измерения одного и того же массива могут иметь разные размеры  Пример: создание треугольного массива: int[][] arr; arr = new int[3][]; // это ошибка: new int[][3] arr[0] = new int[1]; arr[1] = new int[2]; arr[2] = new int[3]; for( i = 0; i < 3; i++ ) for( int j=0; j <= i; j++ ) arr[i][j] = j; String s = ""; for( i = 0; i < 3; i++ ) { s = ""; for(int j = 0; j <= i; j++ ) s += (arr[i][j]+" "); System.out.println( s ); } 14
  • 15. Выход за границы массива  Во время выполнения приложения виртуальная машина Java отслеживает выход за границы массива.  Если приложение пытается выйти за границу массива, генерируется исключение java.lang.ArrayIndexOutOfBoundsException 15
  • 16. Копирование массивов  Если присвоить одной переменной-ссылке на массив другую переменную-ссылку на массив, то будет скопирован только адрес массива:  int[] a = new int [3]; int[] b = a;  Если изменить элемент массива b, то это скажеться и на массиве а, т.к. эти переменные-ссылки указывают на один и тот же массив.  Скопировать значения элементов массива можно в цикле  Есть системный метод копирования массивов:  System.arraycopy(a, index1a, b, index1b, count);  Из а в b копируются count элементов начиная с индекса index1a в массиве а. Они размещаются в массиве b начиная с индекса index1b. 16
  • 17. Методы обработки массивов  Используется класс Arrays из пакета java.util (т.е. нужно импортировать этот пакет: import java.util.*)  Arrays.fill(mas, znach) – заполняет массив одинаковыми значениями znach  Arrays.equals(a, b) – сравнивает два массива по элементам. (Сравнивать a == b нельзя, т.к. будут сравниваться адреса массивов, а не значения)  Arrays.sort(a) – сортирует массив  И др. 17
  • 18. Рассмотрены вопросы:  Определение и характеристики массива  Принципы работы с массивами  Объявление (декларация)  Создание (выделение памяти)  Инициализация массивов  Типовые алгоритмы обработки одномерных массивов  Двухмерные массивы  Непрямоугольные двухмерные массивы 18
  • 19. Комментарии к заданиям  Каждое задание состоит из нескольких частей в порядке возрастания их сложности  Вы можете выполнить несколько заданий по одному пункту, либо все пункты одного задания и т.д. в зависимости от вашего уровня  Не обязательно делать все задания! 19
  • 20. Задания  В одномерном массиве, состоящем из п вещественных элементов, вычислить:  1) сумму отрицательных элементов массива;  2) произведение элементов массива, расположенных между максимальным и ми­  нимальным элементами.  Упорядочить элементы массива по возрастанию. 20
  • 21. Задания  в одномерном массиве, состоящем из п целых элементов, вычислить:  1) произведение элементов массива с четными номерами;  2) сумму элементов массива, расположенных между первым и последним нуле­  выми элементами.  Преобразовать массив таким образом, чтобы сначала располагались все положи­  тельные элементы, а потом — все отрицательные (элементы, равные О, считать  положительными). 21
  • 22. Задания  в одномерном массиве, состоящем из п вещественных элементов, вычислить:  1) максимальный элемент массива; Упражнения к части I 1 3 7  2) сумму элементов массива, расположенных до последнего положительного эле­  мента.  Сжать массив, удалив из него все элементы, модуль которых находится в интер-  вале [а,Ь]. Освободившиеся в конце массива элементы заполнить нулями. 22
  • 23. Задания  в одномерном массиве, состоящем из п целых элементов, вычислить:  1) минимальный по модулю элемент массива;  2) сумму модулей элементов массива, расположенных после первого элемента,  равного нулю. 1 3 8 Часть I. Структурное программирование  Преобразовать массив таким образом, чтобы в первой его половине располага-  лись элементы, стоявшие в четных позициях, а во второй половине — элементы,  стоявшие в нечетных позициях. 23
  • 24. Задания  Дана целочисленная прямоугольная матрица. Определить:  1) количество строк, не содержащих ни одного нулевого элемента;  2) максимальное из чисел, встречающихся в заданной матрице более одного раза. 24
  • 25. Задания  Дана целочисленная прямоугольная матрица. Определить:  1) количество столбцов, содержащих хотя бы один нулевой элемент;  2) номер строки, в которой находится самая длинная серия одинаковых элементов. 25