Как ввести массив с клавиатуры в c
Обновлено: 21.11.2024
Убедитесь, что вы вошли в систему и у вас есть необходимые разрешения для доступа к тесту.
Произошла ошибка сервера. Обновите страницу или повторите попытку через некоторое время.
Произошла ошибка. Обновите страницу или повторите попытку через некоторое время.
Мы заботимся о конфиденциальности ваших данных. HackerEarth использует предоставленную вам информацию для предоставления актуального контента, продуктов и услуг.
Наша политика конфиденциальности и Условия предоставления услуг помогут вам понять, как вы нашли данные на HackerEarth.
Зарегистрируйтесь и получите бесплатный доступ к более чем 100 руководствам и практическим задачам Начать
Массив — это последовательный набор переменных одного типа данных, к которым можно получить доступ, используя целое число в качестве индекса, который обычно начинается с 0. Он хранит элементы данных в непрерывной ячейке памяти. На каждый элемент можно ссылаться отдельно с соответствующим индексом.
Одномерный массив. Это линейный массив, элементы которого хранятся в последовательном порядке. Попробуем продемонстрировать это на примере: Допустим, нам нужно хранить целые числа 2, 3, 5, 4, 6, 7. Мы можем хранить их в массиве целочисленного типа данных. Способ сделать это:
Здесь Arr — имя массива, а 6 — его размер. Необходимо определить массив размеров во время компиляции.
Чтобы сохранить вышеуказанные элементы в массиве:
Поскольку индексация массива начинается с 0, если необходимо получить доступ к 4-му элементу, Arr [ 3 ] даст вам значение 4-го элемента. Точно так же к n-му элементу можно получить доступ с помощью Arr[n-1].
Многомерный массив: его можно рассматривать как массив массивов. Наиболее часто используемый многомерный массив — это двумерный массив. Он хранит элементы, используя 2 индекса, которые дают информацию о том, в какой строке и в каком столбце хранится конкретный элемент. Двумерный массив по сути представляет собой матрицу.
Здесь A — это двумерный массив символьных данных. Массив содержит 3 строки и 2 столбца.
Здесь строки и столбцы начинаются с индекса 0. Если вам нужно получить доступ к символу «M», вы можете получить к нему доступ с помощью A[ 1 ] [ 1 ].
Давайте поэкспериментируем с кодом ниже:
Вывод:
Третий элемент Arr равен 5
2 3 5 4 6 7
Все элементы двумерного массива A[ ][ ] равны:
PI
OM
ГД
Пришло время для викторины-сюрприза по массиву? Здорово. Вот. Допустим, у вас есть массив: A[ 6 ] = и вам нужно найти сумму элементов между индексами от 2 до 4. Как вы это сделаете?
Вы можете просто запустить цикл от начального индекса к конечному индексу и сохранить сумму в определенной переменной. Давайте реализуем это на C++:
Вывод:
Требуемый вывод: 17
Теперь поговорим о строках.
Строка представляет собой последовательность символов. Другими словами, мы можем сказать, что строка представляет собой массив данных символьного типа. Экземпляр строки называется строковым литералом. Они заключены в двойные кавычки ("") . Например, «HackerEarth» — это строковый литерал. В C++ существует два типа строк: Строка в стиле C Тип класса String
Строки в стиле C представляют собой одномерный массив символов. Однако у них есть особое свойство: они заканчиваются нулевым символом («\0»), обозначающим конец строки.
Инициализация: массив символов можно инициализировать, как и любой другой обычный массив
или его можно напрямую инициализировать с помощью строкового литерала
str – это строка, в которой есть экземпляр (строковый литерал) "HELLO". Несмотря на то, что всего 5 символов, размер строки равен 6, поскольку нулевой символ представляет собой конец строки. Нулевой символ автоматически добавляется компилятором, если размер массива хотя бы на единицу больше размера строки. Не обязательно, чтобы размер массива (N) был точно больше размера строки (n) на 1, т.е. N >= n + 1
Чтобы взять строку в стиле C в качестве входных данных, вы можете просто использовать scanf() со спецификатором формата «%s» или мы также можем использовать cin. Он будет принимать ввод, пока мы не нажмем пробел или ввод. Например:
Аналогично вы можете напечатать строку в стиле C с помощью функции printf() со спецификатором формата '%s' или cout.
Теперь поговорим о строковом типе данных C++. Она во многом отличается от вашей обычной строковой функции в стиле C. В C строки — это просто массивы символов, которые заканчиваются нулевым символом. Однако в строках C++ не нужно беспокоиться о размерах массива или нулевом символе.C++ предоставляет тип внутреннего класса, который используется для работы со строками. Строки могут быть объявлены и инициализированы следующим образом
Обратите внимание, что несмотря на то, что строки C++ представляют собой отдельный тип класса, на их символы по-прежнему можно ссылаться с помощью индексации, основанной на 0, как и на строки C. Например, в приведенном выше примере str[ 2 ] — это символ «L», и можно выполнять итерацию по строке, как по обычному массиву.
Давайте теперь рассмотрим некоторые функции, которые мы можем выполнять со строками. В C есть несколько предопределенных функций, которые можно использовать для выполнения обычных операций со строками, таких как копирование, объединение, сравнение и определение длины. Важно отметить, что все функции, которые используются в строковой функции в стиле C, также могут быть применены к строке C++.
Копировать: копировать одну строку в другую. Строковая функция в стиле C:
Длина: определение длины строки. Строковая функция в стиле C: strlen(s1); Строка С++:
Объединение: добавление одной строки в конец другой. Строковая функция в стиле C: strcat(s1, s2);
ПРИМЕЧАНИЕ. Все приведенные выше строковые функции в стиле C находятся в заголовочном файле C++.
Чтобы использовать строковый тип данных в качестве входных данных, вы не можете использовать scanf(). Нам нужно использовать cin. Он будет принимать ввод, пока мы не нажмем пробел или ввод. Например:
Аналогично, вы не можете распечатать тип данных string с помощью функции printf() напрямую. Либо мы можем использовать cout, либо мы можем преобразовать строковый тип данных в строку в стиле C, используя функцию c_str(), а затем использовать printf().
Рассмотрите задачу нахождения длины строки без использования встроенных функций.
Чтобы вычислить длину строки, мы должны пройти от начала до момента, когда встретится нулевой символ. Поскольку нулевой символ представляет собой конец строки, это помогает нам понять, что мы достигли конца строки.
Вывод:
Длина строки str: 5
Длина строки str: 5
str имеет экземпляр «HELLO». Мы начинаем с самого начала, т. Е. s [ 0 ], который равен «H», и сравниваем его с нулевым символом. Затем мы продолжим это, сравнивая каждый символ в строке с нулевым символом.
А теперь давайте дадим вам несколько задач для размышления перед конкурсом на следующей неделе:
В: Как вы скопируете одну строку в другую без использования встроенных библиотек?
В: Как вы будете вставлять элемент в массив в заданной конкретной позиции?
В: Как узнать количество вхождений определенного символа в строку?
В этом уроке вы научитесь работать с массивами. Вы научитесь объявлять, инициализировать и получать доступ к элементам массива с помощью примеров.
Видео: Массивы C
Массивы в C
Массив – это переменная, которая может хранить несколько значений. Например, если вы хотите хранить 100 целых чисел, вы можете создать для них массив.
Как объявить массив?
Например,
Здесь мы объявили массив mark с плавающей запятой. И его размер равен 5. Это означает, что он может содержать 5 значений с плавающей запятой.
Важно отметить, что размер и тип массива нельзя изменить после его объявления.
Доступ к элементам массива
Вы можете получить доступ к элементам массива по индексам.
Предположим, вы объявили метку массива, как указано выше. Первый элемент — это mark[0], второй элемент — это mark[1] и так далее.
Объявить массив
Несколько ключевых заметок:
- Первый индекс массивов равен 0, а не 1. В этом примере mark[0] является первым элементом.
- Если размер массива равен n, для доступа к последнему элементу используется индекс n-1. В этом примере отметьте[4]
- Предположим, что начальный адрес mark[0] равен 2120d. Тогда адрес метки[1] будет 2124d. Точно так же адрес mark[2] будет 2128d и так далее.
Это связано с тем, что размер числа с плавающей запятой составляет 4 байта.
Как инициализировать массив?
Можно инициализировать массив во время объявления. Например,
Вы также можете инициализировать массив подобным образом.
Здесь мы не указали размер. Однако компилятор знает, что его размер равен 5, так как мы инициализируем его 5 элементами.
Инициализировать массив
Изменить значение элементов массива
Элементы входного и выходного массива
Вот как можно получить данные от пользователя и сохранить их в элементе массива.
Вот как можно напечатать отдельный элемент массива.
Пример 1: ввод/вывод массива
Вывод
Здесь мы использовали цикл for, чтобы получить 5 входных данных от пользователя и сохранить их в массиве. Затем с помощью другого цикла for эти элементы выводятся на экран.
Пример 2. Вычисление среднего
Вывод
Здесь мы вычислили среднее значение n чисел, введенных пользователем.
Доступ к элементам за его пределами!
Предположим, вы объявили массив из 10 элементов. Скажем,
Вы можете получить доступ к элементам массива от testArray[0] до testArray[9] .
Скажем, если вы попытаетесь получить доступ к testArray[12] . Элемент недоступен. Это может привести к неожиданному выводу (неопределенное поведение). Иногда вы можете получить сообщение об ошибке, а иногда ваша программа может работать правильно.
Следовательно, вы никогда не должны обращаться к элементам массива за пределами его границ.
Многомерные массивы
В этом руководстве вы узнали о массивах. Эти массивы называются одномерными массивами.
В следующем уроке вы узнаете о многомерных массивах (массиве массива).
Массив — это группа (или коллекция) данных одного типа. Например, массив int содержит элементы типов int, а массив float содержит элементы типов float.
Зачем нам нужен массив в программировании на C?
Рассмотрите сценарий, в котором вам нужно узнать среднее значение 100 целых чисел, введенных пользователем. В C у вас есть два способа сделать это: 1) Определить 100 переменных с типом данных int, а затем выполнить 100 операций scanf() для сохранения введенных значений в переменных, а затем, наконец, вычислить их среднее значение. 2) Имейте один целочисленный массив для хранения всех значений, зацикливайте массив для хранения всех введенных значений в массиве, а затем вычисляйте среднее значение.
Какое решение, по вашему мнению, лучше? Очевидно второе решение: удобно хранить одни и те же типы данных в одной переменной, а затем обращаться к ним с помощью индекса массива (мы обсудим это позже в этом руководстве).
Как объявить массив в C
Точно так же массив может иметь любой тип данных, например double , float , short и т. д.
Как получить доступ к элементу массива в C
Вы можете использовать нижний индекс массива (или индекс) для доступа к любому элементу, хранящемуся в массиве. Индекс начинается с 0, что означает, что arr[0] представляет первый элемент в массиве arr.
В общем случае arr[n-1] можно использовать для доступа к n-му элементу массива. где n — любое целое число.
Например:
Пример программирования Array In C для определения среднего значения 4 целых чисел
Давайте обсудим важные части вышеуказанной программы:
Введите данные в массив
Здесь мы перебираем массив от 0 до 3, потому что размер массива равен 4. Внутри цикла мы показываем пользователю сообщение о необходимости ввести значения. Все входные значения сохраняются в соответствующих элементах массива с помощью функции scanf.
Чтение данных из массива
Предположим, если мы хотим отобразить элементы массива, мы можем использовать цикл for в C следующим образом.
Различные способы инициализации массива
В приведенном выше примере мы только что объявили массив, а затем инициализировали его значениями, введенными пользователем. Однако вы также можете инициализировать массив во время объявления следующим образом:
ИЛИ (оба одинаковы)
Неинициализированный массив всегда содержит мусорные значения.
Массив C — представление памяти
Дополнительные темы о массивах в C:
2D-массив. Мы можем иметь многомерные массивы в C, такие как 2D и 3D-массивы. Однако наиболее популярным и часто используемым массивом является 2D — двумерный массив. В этом посте вы узнаете, как объявлять, читать и записывать данные в 2D-массиве, а также о других его функциях.
Передача массива в функцию. Обычно мы передаем значения и переменные при вызове функции, также мы можем передавать массивы в функцию. Вы можете передать элемент массива, а также весь массив (просто указав имя массива, которое работает как указатель) в функцию.
Указатель на массив. Доступ к элементам массива и управление ими можно получить с помощью указателей в C. Используя указатели, вы можете легко работать с массивом. Вы можете получить доступ ко всем элементам массива, просто назначив базовый адрес массива переменной-указателю.
Нам нужно иметь возможность считывать каждое входное значение дважды: один раз, чтобы вычислить среднее значение (кумулятивную сумму), и еще раз, чтобы подсчитать, сколько из них было выше среднего. Мы могли бы прочитать каждое значение в переменную, но мы не знаем, сколько дней потребуется для запуска программы, поэтому мы не знаем, сколько переменных нужно объявить.
Нам нужен способ объявить множество переменных за один шаг, а затем иметь возможность хранить их значения и обращаться к ним.
Задача: возможно ли решить вышеуказанную проблему, используя только методы из предыдущих заметок, без использования массивов? Как?
Массивы
массив — это объект, в котором хранится множество значений одного типа. Массив элемент — это одно значение в массиве. Массив index — это целое число, указывающее позицию в массиве. Как и String, массивы используют индексирование с отсчетом от нуля, то есть индексы массива начинаются с 0. Ниже показаны индексы и значения в массиве с 10 элементами типа < tt>целое.
индекс | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
value | 12 | 49 | -2 | 26 | 5 | 17 | -6 | 84 | 72 | 3 |
Объявление и создание массива
Это просто объявляет переменную, которая может содержать массив, но не создает сам массив.
Например, чтобы объявить переменную numbers, которая может содержать массив целых чисел, мы должны использовать:
Поскольку массивы являются объектами, мы создаем массивы с помощью new.
При создании массива вы указываете количество элементов в массиве следующим образом:
индекс | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
value | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Каждый элемент в массиве инициализируется нулем или любым значением, которое считается "эквивалентным" нулю для типа данных (false для boolean и null для String).
Сохранение значений и доступ к элементам
индекс | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
value | 27 | 0 | 0 | -6 | 0 | 0 | 0 | 0 | 0 | 0 |
При объявлении массива каждому элементу массива присваивается начальное значение по умолчанию.
Для целых чисел значение по умолчанию равно 0. Как вы думаете, какое значение по умолчанию используется для двойных чисел?
Упражнение: начальные значения массива по умолчанию
Напишите программу, которая объявляет массив double длины 4, печатает значения, присваивает значение каждому элементу и снова печатает значения.
Теперь сделайте то же самое для массива элементов String.
Массивы и циклы
Мы можем использовать целочисленную переменную в качестве индекса массива. Если мы используем цикл for для подсчета от 0 до самого высокого индекса, то мы можем обрабатывать каждый элемент массива. Например, следующий код суммирует элементы массива numbers.
Мы начинаем с 0, потому что индексы начинаются с 0. Мы заканчиваем сразу перед 10, потому что 10 — это длина нашего массива numbers, а последний индекс на единицу меньше длины массива.
[Массивы предоставляют много возможностей для ошибок один за другим из-за того, как работают индексы.]
Если бы мы изменили массив numbers, чтобы он содержал другое количество элементов, этот код больше не работал бы. К счастью, Java предоставляет простой способ получить длину массива, добавив .length после переменной массива, например:
Обратите внимание, что для массивов мы не используем круглые скобки после длины.
Это отличается от способа определения длины строк.
Упражнение: Инициализировать и показать целочисленный массив
Напишите программу, которая вводит длину массива int от пользователя и присваивает 1 по индексу 0, присваивает 2 по индексу 1, присваивает 3 по индексу 2 и так далее. Один цикл должен присваивать значения каждому элементу массива. Второй цикл должен печатать значения массива с пробелами между значениями.
Упражнение: Инициализировать и показать двойной массив
Напишите программу, которая вводит длину массива двойных от пользователя и значение для инициализации массива. Один цикл должен присвоить значение каждому элементу массива. Второй цикл должен печатать значения массива с пробелами между значениями.
Температурная программа
Рассмотрите взаимодействие в начале этих заметок. Вот псевдокод, который следует последовательности взаимодействий, используя массив для управления значениями, которые вводит пользователь. Обратите внимание, что мы не можем подсчитать, сколько элементов выше среднего, пока не вычислим среднее значение, и мы не можем вычислить среднее значение, пока не введем все элементы.
- Введите количество дней от пользователя.
- Объявите и создайте массив int с числом дней в качестве длины.
- Для каждого индекса в массиве:
- Введите температуру от пользователя.
- Сохранить температуру в массиве по этому индексу. ол>
- Добавьте значение этого индекса к сумме. ол>
- Если значение этого индекса больше среднего:
- Увеличить значение счетчика.
Мы могли бы объединить первые два цикла в один цикл, но чище делать их по отдельности.
Вот программа, соответствующая псевдокоду.Упражнение: дисперсия и стандартное отклонение
Измените программу температуры так, чтобы она также вычисляла дисперсию и стандартное отклонение температур.
Чтобы вычислить дисперсию, необходимо суммировать:Дополнительные функции массива
В Java есть множество других возможностей для программирования с массивами. Мы просто приводим здесь некоторые примеры и информацию. Дополнительную информацию см. в учебнике.
Если вы заранее знаете, какие значения будут в массиве, вы можете указать эти значения при объявлении массива, например:
Существует особый вид цикла (цикл for-each) для обработки каждого значения в массиве. Вот пример для программы «Температура». Конечно, лучше выбрать имя, чем foo.
Класс Arrays предоставляет несколько удобных статических методов для работы с массивами. Для их использования необходимо добавить Arrays. перед названием метода (и импортировать пакет java.util).
Имя метода Описание copyOf(array, newSize) возвращает копию массива с новым размером equals( array1, array2) возвращает true, если все элементы равны fill(массив, значение)< /td> присваивает каждому элементу массива значение sort(array) переставляет значения для перехода от наименьшего к наибольшему toString(array) возвращает String представление массив Задание: массив простых чисел
Напишите программу для инициализации массива первыми 10 простыми числами: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29.
Используйте цикл for-each для суммирования значений в массиве.
Выведите массив с помощью метода Arrays.toString.Массивы и методы
Как и другие типы, массивы можно передавать в качестве параметров методам. Предположим, нам нужен метод для суммирования значений в массиве double. Это потребует передачи массива в качестве параметра и возврата результата double.
В данном случае имя параметра — vals, но, как и для всех переменных параметров, вы можете выбрать любое имя по своему усмотрению. Обратите внимание, что [ ] является частью типа параметра. double[ ] vals следует читать как "двойной массив с именем vals".
Упражнение: Метод усреднения массива
Напишите метод, который возвращает среднее значение в массиве int. Включите и используйте этот метод в программе Температура.Массивы также могут быть возвращены методом. Предположим, нам нужен метод, который преобразует String в массив char. Это потребует передачи String в качестве параметра и возврата массива char.
Обратите внимание, что [ ] является частью типа возвращаемого значения, а токен является именем параметра String. Внутри метода нам нужно убедиться, что массив имеет ту же длину, что и String; код получает это значение с помощью метода length. Обратите внимание, что метод length используется дважды: один раз, чтобы указать длину нового массива, а другой — в проверке цикла.
Упражнение: Создайте метод массива int
Напишите метод, который возвращает новый массив int заданного размера и с инициализацией каждого элемента заданным значением. Обратите внимание, что этот метод требует два параметра. Включите и используйте этот метод в программе Температура.Ссылки
Когда вы передаете массив в качестве параметра, Java не создает новую копию массива. Это было бы очень неэффективно для больших массивов. Вместо этого переменная параметра хранит ссылку (или указатель) на тот же массив. Это означает, что если метод изменяет массив, то эти изменения будут видны коду, вызывающему метод. Рассмотрим следующую программу.
Вывод этой программы:
Обратите внимание, что метод setToZero не изменяет value1 на ноль. Когда параметр является примитивным типом, значение копируется. Это иллюстрирует ситуацию до и после оператора value2 = 0;. Значения для value1 и value2 хранятся в двух разных местах.До После value1 3.14 value1 tt> 3.14 value2 3.14 value2 0.0
Однако метод set2Zero изменил элемент array1 на ноль. Когда параметр является массивом, копируется ссылка, а не массив. Это иллюстрирует ситуацию до и после оператора array2[index] = 0;. И массив1, и массив2 ссылаются на один и тот же массив.- Сколько переменных целочисленного массива есть в этой программе?
- Сколько объектов целочисленного массива есть в этой программе?
- Что печатает эта программа?
- После вывода первой строки к скольким массивам может получить доступ эта программа?
- После того, как будет напечатана последняя строка, к скольким массивам может получить доступ эта программа?
- Допустим, мы добавим строку: в конце программы. Сколько массивов теперь может получить доступ к этой программе?
- Напишите метод doubleDoubleArray, который удваивает каждый элемент в массиве double.
Этот метод должен иметь параметр массива и возвращаемый тип void.
Напишите программу для проверки метода, печатающую массив до и после вызова метода. - Напишите аналогичный метод doubleIntArray, который удваивает каждый элемент в массиве int.
- Можете ли вы написать единственный метод, который может принимать массив double или массив int в качестве параметра и удваивать элементы массива?
Алгоритмы обхода массива
Дополнительная тема: Чтение файла в массив
Если вы выполняли некоторые действия, вы, вероятно, обнаружили, что вводить значения для массивов вручную утомительно. Программе было бы удобнее читать значения из файла. Дополнительную информацию об обработке файлов можно найти в главе 6 учебника.
файл — это набор информации, который хранится на компьютере и которому присвоено имя. Например, hamlet.txt может быть именем файла, содержащего текст Hamlet. Hello.java может быть именем файла с вашей программой "Hello World". Мы будем работать с текстовыми файлами, включая файлы с расширением .txt, а также файлы .java и .html. р>
- Открыть файл для чтения (или записи).
- Чтение данных из файла (или запись данных в файл).
- Закройте файл.
В Java мы будем использовать объекты File для представления файлов и объекты Scanner для открытия, чтения и закрытия файлов. Предположим, у нас есть файл temperature.txt, который содержит следующую информацию, необходимую программе Temperature.
Предполагая, что этот файл находится в той же папке, что и программа Temperature, объект File может быть создан с помощью этого оператора.
Для большинства целей нам не нужен объект File, за исключением создания объекта Scanner, поэтому два приведенных выше оператора можно закодировать в один оператор.
Мы можем использовать объект Scanner для файла так же, как объект Scanner для клавиатуры, за исключением того, что нам не нужно печатать подсказки. Вот программа Temperature, которая считывает информацию из файла.
Обратите внимание, что необходим дополнительный оператор импорта; это потому, что класс File является частью пакета java.io. Также обратите внимание, что в заголовке метода необходимо предложение throws. Это связано с тем, что Java требует, чтобы вы обращали внимание на возможность FileNotFoundException. Было бы лучше использовать оператор try/catch для решения этой проблемы, но это выходит за рамки данного курса.- Измените файл, чтобы он содержал недопустимые данные. Что происходит?
- Измените программу так, чтобы она считывала температуры из файла, пока есть допустимые записи для чтения, а затем отображала результаты.
- Измените программу, чтобы она печатала температуры по мере их считывания.
- Удалите первую строку (количество дней) из файла Temperature.txt.
- Замените первый цикл for на:
while(input.hasNextInt()) - Создайте массив размером MAX_SIZE, константой, инициализированной до 100.
- Сохраняйте подсчет количества прочитанных значений (переменная count уже занята).
Используйте его как индекс для хранения элементов в массиве и для вычисления среднего значения. Не используйте temps.length - Распечатайте количество считанных значений температуры вместе со средней температурой.
- Измените цикл while, чтобы не считывалось больше MAX_SIZE чисел.
Задание: Поиск Гамлета
Напишите программу, которая считывает 32230 токенов из hamlet.txt в массив String. Запросить у пользователя слово для поиска. Подсчитайте и распечатайте, сколько раз встречается это слово. Вы можете попробовать два слова: "haue" (более 100 раз) и "againe" (более 10 раз).Дополнительная тема: многомерные массивы
Во многих приложениях данные имеют несколько измерений. Таблицы, изображения. и видео являются тремя распространенными примерами. Здесь мы будем использовать пример файла iris.txt. Если вы хотите узнать больше о том, что означают эти числа, вы можете прочитать это.
Первая строка iris.txt указывает, что данные состоят из 150 строк (или строк) и 5 столбцов. Многомерный массив может быть объявлен так, чтобы мы могли получить доступ к элементу по строке и столбцу. Предполагая, что эти числа хранятся в переменных с именами rows и columns, мы можем объявить двумерный массив следующим образом:
Обратите внимание, что в объявлении есть две пары квадратных скобок. Также обратите внимание, что указаны две длины. Для трехмерного массива нам потребуются три пары скобок и так далее для более высоких измерений.
Элемент в десятой строке и третьем столбце будет назначен и доступен:
Для обоих параметров используется индексация с отсчетом от нуля. Конечно, было бы очень утомительно писать 750 строк кода для присвоения значения каждому элементу массива iris. Обычно используются вложенные циклы.
- Для каждого индекса строки:
- Для индекса каждого столбца:
- Что-то делать с элементом в этой строке и столбце
Если объект Scanner для чтения из iris.txt хранится в переменной input, то следующий код заполнит массив (при условии, что первые два числа были потреблены).
Подобный двойной цикл может быть закодирован для другой обработки данных. Предположим, вы хотите вычислить среднее значение каждого из столбцов. Для пяти столбцов можно объявить пять переменных, но для пяти средних лучше объявить массив с пятью элементами. В следующем коде дополнительный массив сначала используется для хранения сумм по каждому столбцу, а затем деление приводит к среднему значению.
Когда у вас много данных, часто полезно посмотреть, как они выглядят. В качестве последнего примера рассмотрим, как подсчитать, сколько раз каждое значение встречается в файле iris.txt. При проверке каждое значение имеет не более одного десятичного знака, поэтому, если мы умножим на 10 и округлим, то разные значения будут соответствовать разным целым числам. Все значения в файле iris.txt положительные, а наибольшее значение равно 7,9, поэтому целые числа будут находиться в диапазоне от 1 до 79. Это означает, что для подсчета каждого значения можно использовать массив целых чисел длиной 80.
Например, предположим, что значение равно 2,3. Умножение на 10 дает 23. Это означает, что мы должны добавить 1 к целочисленному массиву с индексом 23. Вот код, который подсчитывает все 750 значений.
Читайте также:
- Для индекса каждого столбца: