Skip to content
This repository was archived by the owner on Dec 28, 2024. It is now read-only.

Commit 76282b9

Browse files
committed
Лабораторная работа 13-20
1 parent 9a46009 commit 76282b9

File tree

28 files changed

+1067
-1
lines changed

28 files changed

+1067
-1
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4+
<modelVersion>4.0.0</modelVersion>
5+
<parent>
6+
<artifactId>23K0818</artifactId>
7+
<groupId>ru.mirea.practice</groupId>
8+
<version>2024.1</version>
9+
<relativePath>../pom.xml</relativePath>
10+
</parent>
11+
<artifactId>23K0818-p13</artifactId>
12+
</project>
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package ru.mirea.practice.s0000001.task1;
2+
3+
4+
public class Shirt {
5+
private String id;
6+
private String description;
7+
private String color;
8+
private String size;
9+
10+
public Shirt(String id, String description, String color, String size) {
11+
this.id = id;
12+
this.description = description;
13+
this.color = color;
14+
this.size = size;
15+
}
16+
17+
@Override
18+
public String toString() {
19+
return "ID: " + id + "\n"
20+
+ "Description: " + description + "\n"
21+
+ "Color: " + color + "\n"
22+
+ "Size: " + size + "\n";
23+
}
24+
25+
public static Shirt fromString(String shirtString) {
26+
String[] parts = shirtString.split(",");
27+
if (parts.length == 4) {
28+
return new Shirt(parts[0], parts[1], parts[2], parts[3]);
29+
} else {
30+
throw new IllegalArgumentException("Invalid shirt string: " + shirtString);
31+
}
32+
}
33+
34+
public static void main(String[] args) {
35+
String[] shirts = {
36+
"S001,Black Polo Shirt,Black,XL",
37+
"S002,Black Polo Shirt,Black,L",
38+
"S003,Blue Polo Shirt,Blue,XL",
39+
"S004,Blue Polo Shirt,Blue,M",
40+
"S005,Tan Polo Shirt,Tan,XL",
41+
"S006,Black T-Shirt,Black,XL",
42+
"S007,White T-Shirt,White,XL",
43+
"S008,White T-Shirt,White,L",
44+
"S009,Green T-Shirt,Green,S",
45+
"S010,Orange T-Shirt,Orange,S",
46+
"S011,Maroon Polo Shirt,Maroon,S"
47+
};
48+
49+
Shirt[] shirtObjects = new Shirt[shirts.length];
50+
for (int i = 0; i < shirts.length; i++) {
51+
shirtObjects[i] = Shirt.fromString(shirts[i]);
52+
}
53+
54+
for (Shirt shirt : shirtObjects) {
55+
System.out.println(shirt);
56+
}
57+
}
58+
}
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
package ru.mirea.practice.s0000001.task2;
2+
3+
import java.io.BufferedReader;
4+
import java.io.FileReader;
5+
import java.io.IOException;
6+
import java.util.ArrayList;
7+
import java.util.HashSet;
8+
import java.util.List;
9+
import java.util.Locale;
10+
import java.util.Set;
11+
12+
public final class WordChain {
13+
14+
// Приватный конструктор, чтобы предотвратить создание экземпляров класса
15+
private WordChain() {
16+
throw new UnsupportedOperationException("Utility class");
17+
}
18+
19+
public static void main(String[] args) {
20+
String fileName = System.console().readLine("Введите имя файла: ");
21+
22+
try {
23+
List<String> words = readWordsFromFile(fileName);
24+
25+
String result = getLine(words);
26+
27+
System.out.println(result);
28+
29+
} catch (IOException e) {
30+
System.err.println("Ошибка при чтении файла: " + e.getMessage());
31+
}
32+
}
33+
34+
private static List<String> readWordsFromFile(String fileName) throws IOException {
35+
List<String> words = new ArrayList<>();
36+
try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) {
37+
String line;
38+
while ((line = reader.readLine()) != null) {
39+
String[] parts = line.split("\\s+");
40+
for (String part : parts) {
41+
words.add(part.trim());
42+
}
43+
}
44+
}
45+
return words;
46+
}
47+
48+
public static String getLine(List<String> words) {
49+
if (words == null || words.isEmpty()) {
50+
return "";
51+
}
52+
53+
StringBuilder result = new StringBuilder();
54+
Set<String> usedWords = new HashSet<>();
55+
56+
// Начинаем с первого слова
57+
String currentWord = words.get(0);
58+
result.append(currentWord);
59+
usedWords.add(currentWord);
60+
61+
while (usedWords.size() < words.size()) {
62+
boolean foundNextWord = false;
63+
for (String word : words) {
64+
if (!usedWords.contains(word)
65+
&& currentWord.toLowerCase(Locale.ROOT).charAt(currentWord.length() - 1)
66+
== word.toLowerCase(Locale.ROOT).charAt(0)) {
67+
result.append(" ").append(word);
68+
usedWords.add(word);
69+
currentWord = word;
70+
foundNextWord = true;
71+
break;
72+
}
73+
}
74+
if (!foundNextWord) {
75+
break; // Если не нашли подходящего слова, выходим из цикла
76+
}
77+
}
78+
79+
return result.toString();
80+
}
81+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4+
<modelVersion>4.0.0</modelVersion>
5+
<parent>
6+
<artifactId>23K0818</artifactId>
7+
<groupId>ru.mirea.practice</groupId>
8+
<version>2024.1</version>
9+
<relativePath>../pom.xml</relativePath>
10+
</parent>
11+
<artifactId>23K0818-p14</artifactId>
12+
</project>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package ru.mirea.practice.s0000001.task8;
2+
3+
interface Filter {
4+
boolean apply(Object o);
5+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package ru.mirea.practice.s0000001.task8;
2+
3+
import java.lang.reflect.Array;
4+
import java.util.ArrayList;
5+
import java.util.List;
6+
7+
public abstract class FilterExample {
8+
9+
// Метод filter, который принимает массив и реализацию интерфейса Filter
10+
public static <T> T[] filter(T[] array, Filter filter) {
11+
List<T> resultList = new ArrayList<>();
12+
for (T item : array) {
13+
if (filter.apply(item)) {
14+
resultList.add(item);
15+
}
16+
}
17+
// Преобразуем список обратно в массив правильного типа
18+
@SuppressWarnings("unchecked")
19+
T[] resultArray = (T[]) Array.newInstance(array.getClass().getComponentType(), resultList.size());
20+
resultArray = resultList.toArray(resultArray);
21+
return resultArray;
22+
}
23+
24+
public static void main(String[] args) {
25+
String[] strings = {"apple", "banana", "cherry", "date", "elderberry"};
26+
27+
// Фильтр для строк, который оставляет только строки, начинающиеся с буквы 'a'
28+
Filter stringFilter = new Filter() {
29+
@Override
30+
public boolean apply(Object o) {
31+
if (o instanceof String) {
32+
String s = (String) o;
33+
return s.startsWith("a");
34+
}
35+
return false;
36+
}
37+
};
38+
39+
String[] filteredStrings = filter(strings, stringFilter);
40+
System.out.println("Filtered strings: " + java.util.Arrays.toString(filteredStrings));
41+
42+
Integer[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
43+
44+
// Фильтр для чисел, который оставляет только четные числа
45+
Filter numberFilter = new Filter() {
46+
@Override
47+
public boolean apply(Object o) {
48+
if (o instanceof Integer) {
49+
Integer i = (Integer) o;
50+
return i % 2 == 0;
51+
}
52+
return false;
53+
}
54+
};
55+
56+
Integer[] filteredNumbers = filter(numbers, numberFilter);
57+
System.out.println("Filtered numbers: " + java.util.Arrays.toString(filteredNumbers));
58+
}
59+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package ru.mirea.practice.s0000001.task9;
2+
3+
import java.util.HashMap;
4+
import java.util.Locale;
5+
import java.util.Map;
6+
7+
public abstract class FrequencyDictionary {
8+
9+
public static void main(String[] args) {
10+
String text = "Съешь ещё этих мягких французских булок, да выпей же чаю.";
11+
12+
// Получаем частотный словарь
13+
Map<Character, Integer> frequencyMap = buildFrequencyDictionary(text);
14+
15+
for (Map.Entry<Character, Integer> entry : frequencyMap.entrySet()) {
16+
System.out.println("Буква: " + entry.getKey() + ", Частота: " + entry.getValue());
17+
}
18+
}
19+
20+
public static Map<Character, Integer> buildFrequencyDictionary(String text) {
21+
Map<Character, Integer> frequencyMap = new HashMap<>();
22+
23+
// Приводим текст к нижнему регистру с использованием Locale и удаляем все символы, кроме букв
24+
text = text.toLowerCase(Locale.getDefault()).replaceAll("[^а-я]", "");
25+
26+
// Подсчитываем частоту каждой буквы
27+
for (char c : text.toCharArray()) {
28+
frequencyMap.put(c, frequencyMap.getOrDefault(c, 0) + 1);
29+
}
30+
31+
return frequencyMap;
32+
}
33+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4+
<modelVersion>4.0.0</modelVersion>
5+
<parent>
6+
<artifactId>23K0818</artifactId>
7+
<groupId>ru.mirea.practice</groupId>
8+
<version>2024.1</version>
9+
<relativePath>../pom.xml</relativePath>
10+
</parent>
11+
<artifactId>23K0818-p15</artifactId>
12+
</project>
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package ru.mirea.practice.s0000001.task2;
2+
3+
import javax.swing.JComboBox;
4+
import javax.swing.JFrame;
5+
import javax.swing.JLabel;
6+
import javax.swing.JPanel;
7+
import javax.swing.SwingConstants;
8+
import java.awt.BorderLayout;
9+
import java.awt.event.ActionEvent;
10+
import java.awt.event.ActionListener;
11+
import java.util.HashMap;
12+
import java.util.Map;
13+
14+
public class CountryMenu extends JFrame {
15+
16+
private JComboBox<String> countryComboBox;
17+
private JLabel infoLabel;
18+
19+
private Map<String, String> countryInfoMap;
20+
21+
public CountryMenu() {
22+
setTitle("Выбор страны");
23+
setSize(400, 200);
24+
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
25+
26+
JPanel panel = new JPanel();
27+
panel.setLayout(new BorderLayout());
28+
29+
countryComboBox = new JComboBox<>(new String[]{"Россия", "США", "Китай", "Германия", "Франция"});
30+
panel.add(countryComboBox, BorderLayout.NORTH);
31+
32+
infoLabel = new JLabel();
33+
infoLabel.setHorizontalAlignment(SwingConstants.CENTER);
34+
panel.add(infoLabel, BorderLayout.CENTER);
35+
36+
countryInfoMap = new HashMap<>();
37+
countryInfoMap.put("Россия", "Россия: Москва, рубль, 146 млн. человек.");
38+
countryInfoMap.put("США", "США: Вашингтон, доллар, 331 млн. человек.");
39+
countryInfoMap.put("Китай", "Китай: Пекин, юань, 1,4 млрд. человек.");
40+
countryInfoMap.put("Германия", "Германия: Берлин, евро, 83 млн. человек.");
41+
countryInfoMap.put("Франция", "Франция: Париж, евро, 67 млн. человек.");
42+
43+
countryComboBox.addActionListener(new ActionListener() {
44+
@Override
45+
public void actionPerformed(ActionEvent e) {
46+
String selectedCountry = (String) countryComboBox.getSelectedItem();
47+
String info = countryInfoMap.get(selectedCountry);
48+
infoLabel.setText(info);
49+
}
50+
});
51+
52+
add(panel);
53+
setVisible(true);
54+
}
55+
56+
public static void main(String[] args) {
57+
new CountryMenu();
58+
}
59+
}

0 commit comments

Comments
 (0)