ВУЗ:
Составители:
Рубрика:
64
Задача 14: Обнулить элементы тех строк, на пересечении которых
с главной диагональю стоит четный элемент.
Основной идеей при работе с двухмерными массивами является идея
сведения к работе с одномерными массивами. Это возможно, потому что
двухмерный массив – это массив одномерных массивов. Поэтому, как правило,
в программе будет присутствовать класс, который отвечает за
работу с
одномерным массивом, и класс, который будет отвечать за работу с массивом
массивов, т. е. с двухмерным массивом.
Рассуждения:
1. В начале детализируем исходное задание. С учетом того, что в задании
есть слова «главная диагональ», это означает, что изначальный
двухмерный массив имеет одинаковое количество строк и столбцов
(т. е.
он квадратный). Поэтому для создания такого массива необходимо
знать только одну его размерность. Поэтому задание детализируется до
«в квадратном массиве обнулить элементы тех строк, на пересечении
которых с главной диагональю стоит четный элемент».
2. Почти любая задача сводима к последовательности ввода данных,
обработки данных и вывода обработанных данных. В том
числе и эта.
Логично предположить, что пользователь вводит размер двухмерного
массива. Но двухмерный массив состоит из одномерных массивов.
Поэтому в начале «разберемся» с одномерным массивом, а потом
вернемся к двухмерным. Для создания одномерного массива
необходимо знать его размер. С учетом того, что в задании сказано о
работе со строками, в одномерном
массиве будет содержаться одна
строка двухмерного массива. И отсюда вытекает, что размер
одномерного массива равен размеру двухмерного массива.
3. Для создания одномерного массива необходимо знать его размер.
Поэтому размер одномерного массива будем передавать в
конструкторе. Так же в конструкторе будем передавать генератор
случайных чисел, с помощью которого будем заполнять его.
Напомним,
что конструктор с точки зрения синтаксиса – это функция, у которой
пропущен возвращаемый тип, а имя функции совпадает с именем
класса. Поэтому первый шаг в решении задачи будет выглядеть
следующим образом:
public class Array1D {
public int[] data;
public Array1D(int _size, Random r) {
data = new int[_size];
for (int i = 0; i < data.Length; i++) {
data[i] = r.Next(0, 100);
}
}
}
Страницы
- « первая
- ‹ предыдущая
- …
- 62
- 63
- 64
- 65
- 66
- …
- следующая ›
- последняя »