Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаб_3 Головков И.Е. 12002108 ООП

.docx
Скачиваний:
4
Добавлен:
26.06.2024
Размер:
264.02 Кб
Скачать

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ БЕЛОГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ (НИУ «БелГУ») ИНСТИТУТ ИНЖЕРЕНЕРНЫХ И ЦИФРОВЫХ ТЕХНОЛОГИЙ

КАФЕДРА ИНФОРМАЦИОННЫХ И РОБОТОТЕХНИЧЕСКИХ СИСТЕМ

Отчет по лабораторной работе №3

Вариант №5 Тема работы «Использование массивов в языке Java» по дисциплине «Объектно-ориентированное программирование»

студента очного отделения

2 курса группы 12002108

Головкова Игоря Евгеньевича

Проверил:

Резников Н. Г.

Белгород 2022

Цель работы: ознакомиться с организацией одномерных массивов в языке Java и научиться использовать алгоритмы для работы с одномерными массивами.

Общая постановка задачи:

1. Для выполнения лабораторной работы составить алгоритм,

представить его в виде блок-схемы и разработать методы на

языке Java для решения Вашего варианта задания. Номер

варианта совпадает с номером в журнале.

2. В класс, разработанный предыдущих лабораторных работах

добавить новые поля: количество элементов одномерного

массива N, исходный целочисленный массив X, массив

результатов расчета Y (если предусмотрен в варианте задания).

3. В класс, разработанный в 1-й и во 2-й лабораторных работах

добавить три метода: метод ввода данных исходного

одномерного массива X, метод нахождения массива Y (если

предусмотрен в варианте задания) или метод нахождения

требуемых по заданию величин и метод вывода значений

исходного массива X и массива Y на консоль.

4. Массив X вывести на экран в следующем виде:

x1 x2 x3 x4 x5

x6 x7 x8 x9 x10

x11 x12 x13 x14 x15

x16 x17 x18 x19 x20

5. Оформить отчет по лабораторной работе, включающий

 титульный лист;

 цель работы;

 постановку задачи для Вашего варианта;

 текст программы на языке Java;

 скриншоты результатов выполнения тестовых примеров;

 ответы на контрольные вопросы.

Индивидуальные данные для выполнения работы:

Вариант №5. В заданном массиве Х, состоящем из 20 элементов определить и вывести на экран наибольший элемент, а затем заменить его значением суммы элементов, предшествующих ему.

Листинг программы:

Файл 1:

import java.util.Scanner; public class massiv { private static final int N = 20; static Scanner read = new Scanner(System.in); int[] X = new int[N]; int indexMax=0; int[] vvod() { for (int i = 0; i < N / 5; i++) { System.out.print("Введите значение №" + i + ": "); this.X[i] = read.nextInt(); } return this.X; } int[] zapoln() { this.X = new int[]{20, 0, 12, 139, 546, 12, -210, 999, -666, 105, 201, 0, 537, -2, 4, 702, 310, 554, 1, 3}; return this.X; } void vyvod() { System.out.println("Исходный массив: "); for (int i = 0; i < N; i++) { if (i % 5 == 0 && i > 0) System.out.println(); System.out.print(this.X[i] + " "); } } void findMax(){ for (int i = 0; i < N; i++) { if (this.X[i]>this.X[this.indexMax]) this.indexMax = i; } System.out.println("\nМаксимальное значение: " + X[this.indexMax]); } void vyvodDoMax() { int sumElem = 0; System.out.println("Сумма элементов массива до максимального элемента: "); for (int i = 0; i < this.indexMax; i++) { sumElem += this.X[i]; } System.out.println(sumElem); } }

Файл 2: import java.util.Scanner; public class Lab3 { public static void main(String[] args) { Scanner read = new Scanner(System.in); massiv arr = new massiv(); System.out.println("Хотите ввести массив(1) или использовать готовый?(2):"); switch (read.nextInt()) { case 1: { arr.vvod(); break; } case 2:{ arr.zapoln(); break; } default:System.out.println("Введено неправильно"); } arr.vyvod(); arr.findMax(); arr.vyvodDoMax(); } }

Результаты работы java-приложения:

Ответы на контрольные вопросы:

1. Дайте определение массива.

Это индексированный набор данных определенного типа, имеющих общее имя.

2. Как производится доступ к отдельным элементам массива?

К первой переменной массива можно обращаться как к array[0], второй – как к array[1], к последней – как к array[N-1].

3. Какие способы заполнения массива значениями Вы знаете?

Ввод с клавиатуры и инициализация непосредственно в программе

4. Как определяется символьный массив?

char[] array = new char[]

5. Какие ограничения накладываются на индексы массивов?

Индексы массива всегда целые и начинаются с нуля.

В класс добавить метод рандомного заполнения Создать метод нахождения суммы цифр числа

Создать метод нахождения числа в массиве с максимальной суммой цифр

import java.util.Scanner; public class massiv { private static final int N = 20; static Scanner read = new Scanner(System.in); int[] X = new int[N]; int indexMax=0; int[] vvod() { for (int i = 0; i < N / 5; i++) { System.out.print("Введите значение №" + i + ": "); this.X[i] = read.nextInt(); } return this.X; } int[] zapoln() { this.X = new int[]{20, 0, 12, 139, 546, 12, -210, 999, -666, 105, 201, 0, 537, -2, 4, 702, 310, 554, 1, 3}; return this.X; } int[] zapolnRandom() { for (int i = 0; i < 20; i++){ this.X[i] = (int) (Math.random()*100); } return this.X; } void vyvod() { System.out.println("Исходный массив: "); for (int i = 0; i < N; i++) { if (i % 5 == 0 && i > 0) System.out.println(); System.out.print(this.X[i] + " "); } } void findMax(){ for (int i = 0; i < N; i++) { if (this.X[i]>this.X[this.indexMax]) this.indexMax = i; } System.out.println("\nМаксимальное значение: " + X[this.indexMax]); } void vyvodDoMax() { int sumElem = 0; System.out.println("Сумма элементов массива до максимального элемента: "); for (int i = 0; i < this.indexMax; i++) { sumElem += this.X[i]; } System.out.println(sumElem); } int sumDig(int dig){ int sd = 0; while (dig>0) { sd += dig%10; dig /= 10; } return sd; } int sumDigMas(int[] mas){ int maxSum = 0; for(int i=0; i<N; i++) { if (sumDig(mas[i])>maxSum){ indexMax = i; maxSum = sumDig(mas[i]);} } System.out.println("Элемент с максимальной суммой цифр: " + mas[indexMax]); return maxSum; } }