Файл: Лабораторная работа 3 По дисциплине Кроссплатформенное программирование. Фамилия Волков Имя Кирилл.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 22.11.2023

Просмотров: 27

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ

УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ им. проф. М.А. Бонч-Бруевича

ФАКУЛЬТЕТ ИНСТИТУТ НЕПРЕРЫВНОГО ОБРАЗОВАНИЯ
Лабораторная работа №3

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

Фамилия: Волков

Имя: Кирилл

Отчество: Владимирович

Курс:3

Дата сдачи работы _22.04.2023

Санкт-Петербург

2023

Цель и назначение работы

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

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

тексте "слов", являющихся палиндромами, заполнение найденными

"словами" массива и распечатка полученного массива на экране.

Необходимо создать консольное приложение, осуществляющее генерацию

случайного текста в размере не менее чем 100 строк. Все "слова" текста

составляются программой автоматически из случайно выбранных букв.

После создания текста программа осуществляет поиск в тексте слов –

палиндромов (то есть таких слов, которые одинаково читаются слева –

направо и справа – налево), заполняет этими словами массив и распечатывает

на экране исходный текст и найденные палиндромы. Для простоты размер

всех "слов" взять одинаковым. Размер "слова" задается пользователем путем ввода с клавиатуры.

Ход работы

  1. Пишем программу в соответствии с заданием:

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

public class App
{
private static final int LINE_LENGTH = 140;
private static final int LINE_NUMBER = 240;
private static final Random rand = new Random();

private static char getRandLetter()
{
return (char) (97 + rand.nextInt(26));

}

private static String getText(int wordLength)
{
StringBuilder text = new StringBuilder();
for(int k = 0; k < LINE_NUMBER; k++)
{
StringBuilder line = new StringBuilder();
while(line.length() + wordLength + 1 <= LINE_LENGTH)
{
char[] chars = new char[wordLength];
for(int j = 0; j < wordLength; j++)
{
chars[j] = getRandLetter();
}
line.append(chars).append(' ');
}
text.append(line).append("\n");

}
return text.toString();
}

private static boolean isPalindrome(String s){
if(s == null || s.isEmpty()){
return false;
}
int length = s.length();
char[] chars = s.toCharArray();
for(int i = 0, j = length - 1; i < length / 2 && j >= length - length / 2; i++, j--)
{
if (chars[i] != chars[j]){
return false;
}
}
return true;

}
private static String[] findPalindromes(String text)
{
return Arrays.stream(text.split("\\s"))
.filter(App::isPalindrome)
.toArray(String[]::new);
}

public static void main(String[] args)
{

Scanner scanner = new Scanner(System.in);
System.out.println("Input the word length: ");
int wordLength = scanner.nextInt();
System.out.println("The text is : ");
String text = getText(wordLength);
System.out.println(text);
System.out.println("Palindrome list: ");
System.out.println(Arrays.toString(findPalindromes(text)));

}
}

  1. Запускаем ее и вводим число



  1. Получаем сгенерированный текст и массив слов-палиндромов:



Вывод

Была продемонстрирована рабочая программа, удовлетворяющая техническому заданию.