Отчет по лабораторной работе № 3
.docxФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ
Федеральное государственное образовательное бюджетное учреждение
высшего профессионального образования
«Санкт-Петербургский государственный университет телекоммуникаций
им. проф. М. А. Бонч-Бруевича»
Кафедра Безопасности информационных систем
Отчет по лабораторной работе №3
«Работа с массивами и строками. Задача обработки палиндрома.»
По дисциплине: «Кроссплатформенное программирование»
Цель работы:
Изучение общих принципов программирования в среде java.
Написание приложения, осуществляющего поиск в случайно созданном тексте "слов", являющихся палиндромами, заполнение найденными "словами" массива и распечатка полученного массива на экране.
Теоретическая часть:
Считывание длинны слова производится с помощью класса 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.
Написано приложение, осуществляющее поиск в случайно созданном тексте "слов", являющихся палиндромами, заполняющее найденными "словами" массив и распечатывающее полученный массив на экране.