
Лаб_3 Головков И.Е. 12002108 ООП
.docx
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ БЕЛОГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ (НИУ «БелГУ») ИНСТИТУТ ИНЖЕРЕНЕРНЫХ И ЦИФРОВЫХ ТЕХНОЛОГИЙ
КАФЕДРА ИНФОРМАЦИОННЫХ И РОБОТОТЕХНИЧЕСКИХ СИСТЕМ
Отчет по лабораторной работе №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; } }