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

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

.docx
Скачиваний:
15
Добавлен:
03.10.2022
Размер:
37 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ

Федеральное государственное образовательное бюджетное учреждение

высшего профессионального образования

«Санкт-Петербургский государственный университет телекоммуникаций

им. проф. М. А. Бонч-Бруевича»

Кафедра Безопасности информационных систем

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

«Работа с массивами и строками. Задача обработки палиндрома.»

По дисциплине: «Кроссплатформенное программирование»

Цель работы:

  1. Изучение общих принципов программирования в среде java.

  2. Написание приложения, осуществляющего поиск в случайно созданном тексте "слов", являющихся палиндромами, заполнение найденными "словами" массива и распечатка полученного массива на экране.

Теоретическая часть:

  • Считывание длинны слова производится с помощью класса Scanner.

  • Генерация слов производится по алфавиту, указанному в переменной alphabet с помощью двойного цикла, внешний цикл отвечает за количество слов в массиве, а внутренний цикл отвечает за количество букв в слове, создается пустая переменная word, во внутреннем цикле увеличиваем это слово на какую-либо рандомную букву алфавита, пока длинна слова не будет достигать заданной длинны, после заполнения сгенерированное слово добавляется в массив сгенерированных слов generatedWords.

  • Проверка на то является ли слово палиндромом проводится с помощью сравнения первой и последней буквы, затем второй и предпоследней и т.д. если они разные, цикл заканчивается в возвращаемым значением false, если они одинаковы цикл продолжается до буквы в середине слова. Если все условия выполнены слово является палиндромом.

  • Для распечатки слов палиндромов используется цикл for each.

Ход работы:

import java.util.*;

public class Palindroms {

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);

System.out.print("Введите длину слова: ");

int lengthWord = scan.nextInt();

Random rand = new Random();

int wordsNum = 100 + rand.nextInt(30);

String[] words = generateWords(wordsNum, lengthWord);

System.out.println("\n Сгенерированные слова:");

for (String word : words) {

System.out.print(word + " ");

}

printPalindromes(words);

}

public static String[] generateWords(int kolvo, int length) {

String alphabet = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";

Random rand = new Random();

String[] generatedWords = new String[kolvo];

for (int wordNum = 0; wordNum < kolvo; ++wordNum) {

String word = "";

for (int letter = 0; letter < length; ++letter) {

word += alphabet.charAt(rand.nextInt(alphabet.length() - 1));

}

generatedWords[wordNum] = word;

}

return generatedWords;

}

public static boolean proverkaPalindromes (String word) {

for (int i = 0; i < word.length()/ 2 ; ++i) {

if (word.charAt(i) != word.charAt(word.length() - i - 1))

return false;

}

return true;

}

public static void printPalindromes(String[] words) {

int count = 0;

System.out.print("\n\nСлова палиндромы: ");

for (String word : words) {

if (proverkaPalindromes(word)) {

System.out.print(word + " ");

count++;

}

}

System.out.print("\nВсего слов палиндромов: " + count);

}

}

Выводы:

  • Изучены общие принципы программирования в среде java.

  • Написано приложение, осуществляющее поиск в случайно созданном тексте "слов", являющихся палиндромами, заполняющее найденными "словами" массив и распечатывающее полученный массив на экране.