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

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

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

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

Добавлен: 03.02.2024

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

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

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

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

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

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

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

Фамилия: Яковлев

Имя: Александр

Отчество: Андреевич

Курс:3

Студ. билет №:1610541

Группа №: ОБ-62з

Дата сдачи работы _18.06.2019
Санкт-Петербург

2019

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

Изучение общих принципов программирования в среде 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. Получаем сгенерированный текст и массив слов-палиндромов:



Вывод

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