Compare commits

..

6 Commits

Author SHA1 Message Date
Oleh
0e7941c21e Added lab6 2023-06-06 16:22:51 +03:00
Oleh
41ea5f841a Added lab5 2023-06-06 14:48:40 +03:00
Oleh
e38652d12f Added lab4 2023-05-16 15:51:24 +02:00
Oleh
6d7a81dee2 Added lab3 2023-05-15 15:19:00 +02:00
Oleh
ab62df0a7f add lab2 2023-03-23 19:51:48 +01:00
Oleh
4417dfe95a add lab1 2023-03-20 17:36:00 +01:00
57 changed files with 817 additions and 815 deletions

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
# Project exclude paths
/out/

8
.idea/.gitignore generated vendored Normal file
View File

@@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

6
.idea/misc.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_19" default="true" project-jdk-name="openjdk-19" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

8
.idea/modules.xml generated Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/OOP_IO-2x_2023.iml" filepath="$PROJECT_DIR$/OOP_IO-2x_2023.iml" />
</modules>
</component>
</project>

124
.idea/uiDesigner.xml generated Normal file
View File

@@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>

6
.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

View File

@@ -1,33 +0,0 @@
package OOP.Java.lab_1;
import java.util.Scanner;
public class lab_1 {
public static int protectedInput(String variableToRead, Scanner input) {
do {
try {
System.out.printf("Enter %s: ", variableToRead);
return input.nextInt();
} catch (Exception e) {
System.out.printf("%s must be an integer.\n", variableToRead.toUpperCase());
input.nextLine();
}
} while (true);
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
final int n = protectedInput("n", input);
final int m = protectedInput("m", input);
final int a = protectedInput("a", input);
final int b = protectedInput("b", input);
input.close();
final float s = ((float) (b + m) / 2) * (m - b + 1) * (n - a + 1);
System.out.println("S = " + s);
}
}

View File

@@ -1,23 +0,0 @@
package OOP.Java.lab_1
fun protectedInput(variableName: String): Int {
do {
try {
print("Enter $variableName: ")
return readln().toInt()
} catch (e: Exception) {
println("${variableName.uppercase()} must be an integer!")
}
} while (true)
}
fun main() {
val n: Int = protectedInput("n")
val m: Int = protectedInput("m")
val a: Int = protectedInput("a")
val b: Int = protectedInput("b")
val s: Float = (b + m).toFloat() / 2 * (m - b + 1) * (n - a + 1)
println("S = $s")
}

View File

@@ -1,109 +0,0 @@
package OOP.Java.lab_2;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import java.util.Scanner;
public class lab_2 {
public static short protectedInput(String inputPrompt, String errorMessage, Scanner input) {
short read_variable;
do {
try {
System.out.println();
System.out.print(inputPrompt);
read_variable = input.nextShort();
break;
} catch (Exception e) {
System.out.println(errorMessage);
input.nextLine();
}
} while (true);
return read_variable;
}
@NotNull
public static String format(int number) {
int width = String.valueOf(number).length() + 1;
return "|%" + width + "d ";
}
@Contract(pure = true)
public static double average(@NotNull short[] row) {
short sum = 0;
for (short element : row) {
sum += element;
}
return (double) sum / row.length;
}
public static void main(String[] args) {
short rows, columns;
Scanner input = new Scanner(System.in);
final short a = protectedInput("Input a constant to multiply a matrix by: ",
"A constant must be a short-data type integer, try again.", input);
System.out.println();
System.out.println("Input size of the matrix.");
do {
rows = protectedInput("Rows: ",
"A number of rows must be a short-data type integer, try again.", input);
} while (rows <= 0);
do {
columns = protectedInput("Columns: ",
"A number of columns must be a short-data type integer, try again.", input);
} while (columns <= 0);
input.close();
short[][] matrix_B = new short[rows][columns];
System.out.println();
System.out.println("Matrix B:");
String format = format(rows * columns);
for (short i = 0; i < rows; i++) {
for (short j = 0; j < columns; j++) {
matrix_B[i][j] = (short) ((i + 1) * (j + 1));
System.out.printf(format, matrix_B[i][j]);
}
System.out.println("|");
}
System.out.println();
System.out.println("Matrix a×B:");
format = format(rows * columns * a);
for (short i = 0; i < matrix_B.length; i++) {
for (short j = 0; j < matrix_B[i].length; j++) {
matrix_B[i][j] *= (a);
System.out.printf(format, matrix_B[i][j]);
}
System.out.println("|");
}
System.out.println();
System.out.println("Averages of each row:");
for (short[] row : matrix_B) {
System.out.println(average(row));
}
}
}

View File

@@ -1,57 +0,0 @@
package OOP.Java.lab_3;
public class lab_3 {
static int maxStrLength;
static String result;
public static void cSubUtil(StringBuilder stringbuilder, int leftBoundary, int rightBoundary) {
String string = stringbuilder.toString().toLowerCase().replaceAll("[^a-z]","");
// check if the indices lie in the range of string
// and also if it is palindrome
while (leftBoundary >= 0 && rightBoundary < string.length() && string.toLowerCase().charAt(leftBoundary) == string.toLowerCase().charAt(rightBoundary)) {
// expand the boundary
leftBoundary--;
rightBoundary++;
}
// if it's length is greater than maxStrLength update
// maxLength and result
if (rightBoundary - leftBoundary - 1 >= maxStrLength) {
result = string.substring(leftBoundary + 1, rightBoundary);
maxStrLength = rightBoundary - leftBoundary - 1;
}
}
public static int longestPalSubstr(StringBuilder string)
{
result = "";
maxStrLength = 1;
// for every index in the string check palindromes
// starting from that index
for (int i = 0; i < string.length(); i++) {
// check for odd length palindromes
cSubUtil(string, i, i);
// check for even length palindromes
cSubUtil(string, i, i + 1);
}
System.out.println("Longest palindrome substring is: " + compareStrings(string));
return compareStrings(string).length();
}
public static String compareStrings(StringBuilder builder) {
for (int leftBoundary = 0; leftBoundary <= builder.length(); leftBoundary++) {
for (int rightBoundary = builder.length(); rightBoundary >= leftBoundary; rightBoundary--) {
if (result.equals(builder.substring(leftBoundary, rightBoundary).toLowerCase().replaceAll("[^a-z]",""))) {
return builder.substring(leftBoundary, rightBoundary);
}
}
}
return "";
}
public static void main(String[] args) {
StringBuilder stringToDetect = new StringBuilder("Eva, can I see bees in a cave?");
System.out.println("Initial string: " + stringToDetect);
System.out.println("Length is: " + longestPalSubstr(stringToDetect));
}
}

View File

@@ -1,11 +0,0 @@
package OOP.Java.lab_4
class Furniture(val name: String, val material: String, val price: Int, val length: Int, val width: Int, val height: Int) {
fun print(nameWidth: Int, materialWidth: Int, priceWidth: Int){
print("Furniture stats: {")
print("Name: ${this.name.padEnd(nameWidth)} ")
print("Material: ${this.material.padEnd(materialWidth)} ")
print("Price: ${(this.price.toString() + " cu").padEnd(priceWidth + 3)} ")
print("Size: ${this.length}×${this.width}×${this.height}};\n")
}
}

View File

@@ -1,26 +0,0 @@
package OOP.Java.lab_4
fun main() {
val furnitureArray = arrayOf(
Furniture("Chair", "Wood", 10, 5, 5, 10),
Furniture("Counter-top", "Marble", 1_000, 10, 5, 1),
Furniture("Dinner table", "Glass", 500, 15, 10, 1),
Furniture("Office table", "Wood", 200, 10, 7, 1),
Furniture("Refrigerator", "Stainless steel", 20_000, 8, 4, 10)
)
val maxNameWidth = furnitureArray.maxWith(Comparator.comparingInt { it.name.length }).name.length
val maxMaterialWidth = furnitureArray.maxWith(Comparator.comparingInt { it.material.length }).material.length
val maxPriceWidth = furnitureArray.maxWith(Comparator.comparingInt { it.price }).price.toString().length
println("\nUnsorted array:")
for (item in furnitureArray) item.print(maxNameWidth, maxMaterialWidth, maxPriceWidth)
println("\nSorted alphabetically by name:")
furnitureArray.sortBy { it.name }
for (item in furnitureArray) item.print(maxNameWidth, maxMaterialWidth, maxPriceWidth)
println("\nSorted alphabetically by material:")
furnitureArray.sortBy { it.material }
for (item in furnitureArray) item.print(maxNameWidth, maxMaterialWidth, maxPriceWidth)
}

View File

@@ -1,23 +0,0 @@
package OOP.Java.lab_5
/**
* A class representing a single letter in a word.
*
* @property character a character value of a Letter.
*/
class Letter(private val character: Char) {
override fun toString(): String {
return this.character.toString()
}
/**
* Indicates whether the two objects of class Letter are "equal".
*
* @param letter a letter to compare.
* @param ignoreCase if set to "true" will ignore the case of Letters compared.
* @return "true" if letters are equal and "false" if they aren't.
*/
fun letterEquals(letter: Letter, ignoreCase: Boolean): Boolean {
return this.character.toString().equals(letter.toString(), ignoreCase)
}
}

View File

@@ -1,19 +0,0 @@
package OOP.Java.lab_5
/**
* A class representing a punctuation mark following a word or a sentence.
*
* @property punctuationMark a [String] value of a punctuation mark.
*/
class Punctuation(var punctuationMark: String) {
init {
if (!"\\p{Punct}".toRegex().containsMatchIn(punctuationMark)) {
this.punctuationMark = ""
}
}
override fun toString(): String {
return punctuationMark
}
}

View File

@@ -1,35 +0,0 @@
package OOP.Java.lab_5
/**
* A class representing a single sentence is a text.
*
* @property sentenceArray a [Pair] of [Array]s of [Word] and [Punctuation] objects that make up a sentence.
*
* @constructor a primary constructor accepts a [Pair] of [Array]s of [Word] and [Punctuation] objects, a secondary one accepts a string representing the entire sentence.
*/
class Sentence(var sentenceArray: Pair<Array<Word>, Array<Punctuation>>) {
constructor(
sentenceString: String
) : this(
Pair(
sentenceString.split("[\\p{Punct}\\s]+".toRegex()).filter { it.isNotEmpty() }.map { word -> Word(word) }.toTypedArray(),
sentenceString.split(" ").map { word -> Punctuation(word.last().toString()) }.toTypedArray()
)
)
/**
* Returns an array of all [Letter] objects in a sentence.
*/
fun getAllLetters(): Array<Letter> {
var allLetters = arrayOf<Letter>()
this.sentenceArray.first.forEach { allLetters += it.letters }
return allLetters
}
override fun toString(): String {
var sentence = arrayOf<String>()
this.sentenceArray.first.indices.forEach {sentence += this.sentenceArray.first[it].toString() + this.sentenceArray.second[it].toString() }
return sentence.joinToString(" ")
}
}

View File

@@ -1,83 +0,0 @@
package OOP.Java.lab_5
/**
* A class representing the entire text.
*
* @property textArray a [Pair] of [Array]s of [Sentence] and [Punctuation] objects that make up a text.
*
* @constructor a primary constructor accepts a [Pair] of [Array]s of [Sentence] and [Punctuation] objects, a secondary one accepts a string representing the entire text.
*/
class Text(var textArray: Pair<Array<Sentence>, Array<Punctuation>>) {
constructor(
textString: String
) : this(
Pair(
textString.split("[.!?] ?".toRegex()).filter { it.isNotEmpty() }.map { sentence -> Sentence(sentence) }.toTypedArray(),
textString.split("(?<=[.!?]) ?".toRegex()).filter { it.isNotEmpty() }.map { sentence -> Punctuation(sentence.last().toString()) }.toTypedArray()
)
)
/**
* Returns an array of all [Letter] objects in a sentence.
*/
private fun getAllLetters(): Array<Letter> {
var allLetters = arrayOf<Letter>()
this.textArray.first.forEach { allLetters += it.getAllLetters() }
return allLetters
}
/**
* Searches for the longest palindromic substring in a given text.
*
* @return the longest palindromic substring found.
*/
fun palindromeSearch(): String {
var result = " "
val letters = this.getAllLetters()
for (leftBoundary in letters.indices) {
for (rightBoundary in letters.lastIndex downTo leftBoundary + 1) {
val subToC = letters.sliceArray(leftBoundary..rightBoundary)
if (subToC.first().letterEquals(subToC.last(), true) && this.checkReverse(subToC) && subToC.size > result.length) {
result = subToC.joinToString("")
}
}
}
return result
}
/**
* Checks if a given substring is a palindrome.
*
* Is not case-sensitive.
*
* @param substring an [Array] of [Letter] objects representing a substring.
*
* @return "true" is a substring given is a palindrome, "false" if it isn't.
*/
private fun checkReverse(substring: Array<Letter>): Boolean {
var leftBoundary = 0
var rightBoundary = substring.lastIndex
var result = false
val correction = substring.size % 2
while (leftBoundary < substring.size / 2 && rightBoundary >= substring.size / 2 + correction) {
leftBoundary++
rightBoundary--
result = substring[leftBoundary].letterEquals(substring[rightBoundary], true)
}
return result
}
override fun toString(): String {
var text = arrayOf<String>()
this.textArray.first.indices.forEach { text += this.textArray.first[it].toString() + this.textArray.second[it].toString() }
return text.joinToString(" ")
}
}

View File

@@ -1,22 +0,0 @@
package OOP.Java.lab_5
/**
* A class representing a single word is a sentence.
*
* @property letters an array of [Letter] objects that make up a word.
*
* @constructor a primary constructor accepts an array of [Letter] objects, a secondary one accepts a string representing the entire word.
*/
class Word(var letters: Array<Letter>) {
override fun toString(): String {
val wordString = StringBuilder()
this.letters.forEach { wordString.append(it) }
return wordString.toString()
}
constructor(
word: String
) : this((word.toCharArray().map { letter -> Letter(letter) }).toTypedArray())
}

View File

@@ -1,33 +0,0 @@
package OOP.Java.lab_6
import kotlin.time.Duration
/**
* Represents an album by a specific artist, containing multiple tracks.
*
* @property albumName The name of the album.
* @property artist The artist or band associated with the album.
* @property tracks An [Array] of tracks included on the album.
*/
class Album(val albumName: String, val artist: String, val tracks: Array<Track>) {
/**
* Returns an array of tracks within the specified duration range.
*/
fun tracksInDurationRange(durationRange: ClosedRange<Duration>): Array<Track> {
return this.tracks.filter { it.duration in durationRange }.toTypedArray()
}
/**
* Returns the total duration of all tracks on the album.
*/
fun totalDuration(): Duration {
var totalDuration: Duration = Duration.ZERO
this.tracks.forEach { totalDuration += it.duration }
return totalDuration
}
override fun toString(): String {
return "${this.albumName} by ${this.artist}\nTotal duration: ${this.totalDuration()}\nTracks:\n${this.tracks.joinToString("\n")}"
}
}

View File

@@ -1,15 +0,0 @@
package OOP.Java.lab_6
import kotlin.time.Duration
/**
* Represents a track in the Dance-pop style.
*
* @param numberInAlbum The position of the track on the album.
* @param trackName The name of the track.
* @param feature The featured artist(s) in the track (nullable if no featured artist).
* @param duration The [Duration] of the track.
*/
class Dancepop(numberInAlbum: Int, trackName: String, feature: String?, duration: Duration): Track(numberInAlbum, trackName, feature, duration) {
override val style = "Dance-pop"
}

View File

@@ -1,15 +0,0 @@
package OOP.Java.lab_6
import kotlin.time.Duration
/**
* Represents a track in the Electropop style.
*
* @param numberInAlbum The position of the track on the album.
* @param trackName The name of the track.
* @param feature The featured artist(s) in the track (nullable if no featured artist).
* @param duration The [Duration] of the track.
*/
class Electropop(numberInAlbum: Int, trackName: String, feature: String?, duration: Duration): Track(numberInAlbum, trackName, feature, duration) {
override val style = "Electropop"
}

View File

@@ -1,15 +0,0 @@
package OOP.Java.lab_6
import kotlin.time.Duration
/**
* Represents an interlude track.
*
* @param numberInAlbum The position of the track on the album.
* @param trackName The name of the track.
* @param feature The featured artist(s) in the track (nullable if no featured artist).
* @param duration The [Duration] of the track.
*/
class Interlude(numberInAlbum: Int, trackName: String, feature: String?, duration: Duration): Track(numberInAlbum, trackName, feature, duration) {
override val style = "Interlude"
}

View File

@@ -1,15 +0,0 @@
package OOP.Java.lab_6
import kotlin.time.Duration
/**
* Represents a track in the Synth-pop style.
*
* @param numberInAlbum The position of the track on the album.
* @param trackName The name of the track.
* @param feature The featured artist(s) in the track (nullable if no featured artist).
* @param duration The [Duration] of the track.
*/
class Synthpop(numberInAlbum: Int, trackName: String, feature: String?, duration: Duration): Track(numberInAlbum, trackName, feature, duration) {
override val style = "Synth-pop"
}

View File

@@ -1,27 +0,0 @@
package OOP.Java.lab_6
import kotlin.time.Duration
/**
* Represents a track on an album.
*
* @param numberInAlbum The position of the track on the album.
* @param trackName The name of the track.
* @param feature The featured artist(s) in the track (nullable if no featured artist).
* @param duration The [Duration] of the track.
*/
open class Track(val numberInAlbum: Int, val trackName: String, val feature: String?, val duration: Duration) {
/**
* The style or genre of the track.
*/
open val style = ""
override fun toString(): String {
return if (this.feature == null) {
"#${this.numberInAlbum}: ${this.trackName} (${this.duration})"
} else {
"#${this.numberInAlbum}: ${this.trackName} ft. ${this.feature} (${this.duration})"
}
}
}

View File

@@ -1,42 +0,0 @@
package OOP.Java.lab_6
import kotlin.time.Duration.Companion.minutes
import kotlin.time.Duration.Companion.seconds
fun main() {
val chromatica = Album(
"Chromatica",
"Lady Gaga",
arrayOf(
Interlude(1, "Chromatica I", null, 1.minutes),
Synthpop(2, "Alice", null, 2.minutes + 57.seconds),
Dancepop(3, "Stupid Love", null, 3.minutes + 13.seconds),
Dancepop(4, "Rain On Me", "Ariana Grande", 3.minutes + 2.seconds),
Synthpop(5, "Free Woman", null, 3.minutes + 11.seconds),
Electropop(6, "Fun Tonight", null, 2.minutes + 53.seconds),
Interlude(7, "Chromatica II", null, 41.seconds),
Synthpop(8, "911", null, 2.minutes + 52.seconds),
Electropop(9, "Plastic Doll", null, 3.minutes + 41.seconds),
Dancepop(10, "Sour Candy", "Blackpink", 2.minutes + 37.seconds),
Dancepop(11, "Enigma", null, 2.minutes + 59.seconds),
Synthpop(12, "Replay", null, 3.minutes + 6.seconds),
Interlude(13, "Chromatica III", null, 27.seconds),
Electropop(14, "Sine From Above", "Elton John", 4.minutes + 4.seconds),
Synthpop(15, "1000 Doves", null, 3.minutes + 35.seconds),
Dancepop(16, "Babylon", null, 2.minutes + 41.seconds)
)
)
println("$chromatica\n")
println("${chromatica.albumName} tracks sorted by musical style:\n${chromatica.tracks.sortedBy { it.style }.joinToString("\n")}\n")
val durationRange = 1.minutes.. 3.minutes + 30.seconds
println(
"${chromatica.albumName} tracks in a duration range ($durationRange):\n${chromatica.tracksInDurationRange(durationRange).joinToString("\n")}"
)
}

11
OOP_IO-2x_2023.iml Normal file
View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

16
Rust/lab_1/Cargo.lock generated
View File

@@ -1,16 +0,0 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "lab_1"
version = "0.1.0"
dependencies = [
"text_io",
]
[[package]]
name = "text_io"
version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d5f0c8eb2ad70c12a6a69508f499b3051c924f4b1cfeae85bfad96e6bc5bba46"

View File

@@ -1,9 +0,0 @@
[package]
name = "lab_1"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
text_io = "0.1.12"

View File

@@ -1,22 +0,0 @@
fn protected_read(variable_name: &str) -> i32 {
use text_io::try_read;
loop {
print!("Enter {}: ", variable_name);
let read_result: Result<i32, _> = try_read!();
match read_result {
Ok(read_integer) => return read_integer,
Err(_e) => println!("{} must be an integer!", variable_name.to_uppercase()),
}
}
}
fn main() {
let n: i32 = protected_read("n");
let m: i32 = protected_read("m");
let a: i32 = protected_read("a");
let b: i32 = protected_read("b");
let s: f32 = ((b + m) as f32 / 2f32) * ((m - b + 1) * (n - a + 1)) as f32;
println!("S = {}", s);
}

16
Rust/lab_2/Cargo.lock generated
View File

@@ -1,16 +0,0 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "lab_2"
version = "0.1.0"
dependencies = [
"text_io",
]
[[package]]
name = "text_io"
version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d5f0c8eb2ad70c12a6a69508f499b3051c924f4b1cfeae85bfad96e6bc5bba46"

View File

@@ -1,9 +0,0 @@
[package]
name = "lab_2"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
text_io = "0.1.12"

View File

@@ -1,140 +0,0 @@
// #[allow(dead_code)]
fn capitalise(s: &str) -> String {
let mut c = s.chars();
match c.next() {
None => String::new(),
Some(f) => f.to_uppercase().collect::<String>() + c.as_str(),
}
}
fn read_row() -> Vec<i16> {
loop {
print!("Row (separated by spaces): ");
let raw_row: String = text_io::read!("{}\n");
let trimmed_row: &str = raw_row.trim();
match trimmed_row.split(" ").all(|value| {
value.chars().all(|char| char.is_numeric() || char == '-')
&& value.parse::<i32>().unwrap() <= i16::MAX as i32
&& value.parse::<i32>().unwrap() >= i16::MIN as i32
}) {
true => {
return trimmed_row
.split(" ")
.map(|value| value.parse::<i16>().unwrap())
.collect::<Vec<i16>>()
}
false => println!("[Error] The row must consist of short integers, try again."),
}
}
}
fn generate_row(row_index: u16, length: u16) -> Vec<i16> {
return (0..length)
.map(|element_index| (element_index as i16 + 1) * (row_index as i16 + 1))
.collect();
}
fn read_matrix() -> Vec<Vec<i16>> {
let rows: u16 = protected_u16_read("the number of rows");
loop {
print!("Generate [s]quare or [r]ectangle matrix or [i]nput manually [s/r/i]: ");
let option: String = text_io::read!();
match option.to_lowercase().as_str() {
"s" => return (0..rows).map(|i| generate_row(i, rows)).collect(),
"r" => {
let columns: u16 = protected_u16_read("the number of columns");
return (0..rows).map(|i| generate_row(i, columns)).collect();
}
"i" => return (0..rows).map(|_| read_row()).collect(),
_ => println!("[Error] Not an option, try again."),
}
}
}
fn protected_u16_read(variable_name: &str) -> u16 {
use text_io::try_read;
loop {
print!("Enter {}: ", variable_name);
let read_result: Result<u16, _> = try_read!();
match read_result {
Ok(read_integer) => return read_integer,
Err(_e) => println!(
"{} must be a short integer, try again.",
capitalise(variable_name)
),
}
}
}
fn multiply_matrix_by_number(matrix: &Vec<Vec<i16>>, multiplier: u16) -> Vec<Vec<i16>> {
return matrix
.iter()
.map(|row| {
row.iter()
.map(|element| element * multiplier as i16)
.collect()
})
.collect();
}
fn average_of_row(row: &Vec<i16>) -> f32 {
return row.iter().sum::<i16>() as f32 / row.len() as f32;
}
fn format_matrix(matrix: &Vec<Vec<i16>>) -> String {
let max_width = matrix
.iter()
.map(|row| {
row.iter()
.map(|element| element.to_string().len())
.max()
.unwrap()
})
.max()
.unwrap();
let mut formatted_matrix: String = matrix
.iter()
.map(|row| {
row.iter()
.map(|element| format!("| {:max_width$} ", element))
.collect::<Vec<String>>()
.join("")
})
.collect::<Vec<String>>()
.join("|\n");
formatted_matrix.push('|');
return formatted_matrix;
}
fn format_column(column: &Vec<f32>) -> String {
let max_width = column
.iter()
.map(|element| element.to_string().len())
.max()
.unwrap();
return column
.iter()
.map(|element| format!("| {:max_width$} |", element))
.collect::<Vec<String>>()
.join("\n");
}
fn main() {
let full_vec_test: Vec<Vec<i16>> = read_matrix();
println!("\nMatrix B:\n{}\n", format_matrix(&full_vec_test));
let mult_full_vec_test: Vec<Vec<i16>> =
multiply_matrix_by_number(&full_vec_test, protected_u16_read("matrix multiplier"));
println!("Matrix a×B:\n{}\n", format_matrix(&mult_full_vec_test));
let row_averages: Vec<f32> = mult_full_vec_test
.iter()
.map(|row| average_of_row(row))
.collect();
println!(
"Averages for each row in a×B:\n{}",
format_column(&row_averages)
);
}

42
src/Main.java Normal file
View File

@@ -0,0 +1,42 @@
public class Main {
public static void main(String[] args) {
System.out.println(args[2]);
System.out.println("Hello world!");
// System.out.println(1);
int a = 1;
int b = 2;
int c = 1;
int d = 1;
System.out.println(2&1);
System.out.println(2|1);
int aa = 2;
/*if (aa) {
}*/
// System.out.println("a"&"b");
System.out.println('a'&'b');
if ((a > b) & MyBooleanMethod()) {
System.out.println("?????????????????????????");
}
}
static boolean MyBooleanMethod() {
System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
return true;
}
void myFunction() {
}
int myFunction2() {
return 1;
}
}

View File

@@ -0,0 +1,20 @@
package encapsulationInheritancePolymorphism;
public class Encapsulation {
/*private*/ int field;
private int field2;
// int a = 1;
public void myMethodForTheField () {
System.out.println(field);
}
public void myMethodForTheField2 () {
System.out.println(field);
}
public void myMethodForTheFieldAndTheField2 () {
System.out.println(field);
}
}

View File

@@ -0,0 +1,10 @@
package encapsulationInheritancePolymorphism;
public class EncapsulationInheritancePolymorphism {
public static void main(String[] args) {
int a = 1;
// var b = 2;
// System.out.println(b);
}
}

View File

@@ -0,0 +1,14 @@
package encapsulationInheritancePolymorphism;
public class Main {
public static void main(String[] args) {
Student student = new Student();
//...
student.setFaculty("FPM", "MO-22");
}
}

View File

@@ -0,0 +1,18 @@
package encapsulationInheritancePolymorphism;
public class Student {
private String name;
private String surname;
private String group;
private String faculty;
public String getName() {
return name;
}
public void setFaculty(String faculty, String group) {
this.faculty = faculty;
this.group = group;
}
}

View File

@@ -0,0 +1,9 @@
package encapsulationInheritancePolymorphism.inheritance;
public class ElectricEngine extends Engine {
private String batteryType;
/*private class Engine {
private int power;
}*/
}

View File

@@ -0,0 +1,5 @@
package encapsulationInheritancePolymorphism.inheritance;
public class Engine {
private int power;
}

View File

@@ -0,0 +1,5 @@
package encapsulationInheritancePolymorphism.inheritance;
public class FuelEngine extends Engine {
private String fuelType;
}

View File

@@ -0,0 +1,8 @@
package encapsulationInheritancePolymorphism.inheritance;
public class Main {
public static void main(String[] args) {
ElectricEngine electricEngine = new ElectricEngine(); // створення нового об'єкту (екземпляру) класу ElectricEngine
FuelEngine fuelEngine = new FuelEngine();
}
}

View File

@@ -0,0 +1,14 @@
package encapsulationInheritancePolymorphism.polymorphism;
public class ElectricEngine extends Engine {
private String batteryType;
@Override
public int getPower() {
return 20;
}
/*private class Engine {
private int power;
}*/
}

View File

@@ -0,0 +1,9 @@
package encapsulationInheritancePolymorphism.polymorphism;
public class Engine {
private int power;
public int getPower() {
return power;
}
}

View File

@@ -0,0 +1,10 @@
package encapsulationInheritancePolymorphism.polymorphism;
public class FuelEngine extends Engine {
private String fuelType;
@Override
public int getPower() {
return 50;
}
}

View File

@@ -0,0 +1,38 @@
package encapsulationInheritancePolymorphism.polymorphism;
/*import encapsulationInheritancePolymorphism.inheritance.ElectricEngine;
import encapsulationInheritancePolymorphism.inheritance.FuelEngine;*/
public class Main {
public static void main(String[] args) {
/*encapsulationInheritancePolymorphism.inheritance.*/ElectricEngine electricEngine = new ElectricEngine(); // створення нового об'єкту (екземпляру) класу ElectricEngine
/*encapsulationInheritancePolymorphism.inheritance.*/FuelEngine fuelEngine = new FuelEngine();
Engine engine1 = fuelEngine;
Engine[] engines = {
electricEngine,
fuelEngine
};
for (Engine engine : engines) {
System.out.println(engine.getPower());
}
/*for (int i = 0; i < engines.length; i++) {
System.out.println(engines[i].getPower());
}*/
// +
int a = 1;
int b = 1;
int c = a + b;
System.out.println(c);
String sA = "1";
String sB = "1";
String sC = sA + sB;
System.out.println(sC);
}
}

View File

@@ -0,0 +1,19 @@
package encapsulationInheritancePolymorphism.polymorphism.enhanced;
public class ElectricEngine extends Engine {
private String batteryType;
private int chargeLevel = 9;
private int criticalChargeLevel = 10;
private float coefficientCriticalPowerCut = 0.1f;
@Override
public int getPower() {
return chargeLevel > criticalChargeLevel
? super.getPower()
: (int) (super.getPower() * coefficientCriticalPowerCut);
}
/*private class Engine {
private int power;
}*/
}

View File

@@ -0,0 +1,9 @@
package encapsulationInheritancePolymorphism.polymorphism.enhanced;
public class Engine {
private int power = 100;
public int getPower() {
return power;
}
}

View File

@@ -0,0 +1,10 @@
package encapsulationInheritancePolymorphism.polymorphism.enhanced;
public class FuelEngine extends Engine {
private String fuelType;
/*public int getPower() {
return 50;
}*/
}

View File

@@ -0,0 +1,28 @@
package encapsulationInheritancePolymorphism.polymorphism.enhanced;
/*import encapsulationInheritancePolymorphism.inheritance.ElectricEngine;
import encapsulationInheritancePolymorphism.inheritance.FuelEngine;*/
public class Main {
public static void main(String[] args) {
/*encapsulationInheritancePolymorphism.inheritance.*/
ElectricEngine electricEngine = new ElectricEngine(); // створення нового об'єкту (екземпляру) класу ElectricEngine
/*encapsulationInheritancePolymorphism.inheritance.*/
FuelEngine fuelEngine = new FuelEngine();
Engine engine1 = fuelEngine;
Engine[] engines = {
electricEngine,
fuelEngine
};
for (Engine engine : engines) {
System.out.println(engine.getPower());
}
/*for (int i = 0; i < engines.length; i++) {
System.out.println(engines[i].getPower());
}*/
}
}

View File

@@ -0,0 +1,17 @@
package encapsulationInheritancePolymorphism.polymorphism.overload;
public class MyClassForOverloadExample {
void myMethod(int a) {
System.out.println("Integer: " + a);
}
void myMethod(double a) {
System.out.println("Double: " + a);
}
public static void main(String[] args) {
MyClassForOverloadExample overload = new MyClassForOverloadExample();
overload.myMethod(1);
overload.myMethod(0.1);
}
}

45
src/lab1.java Normal file
View File

@@ -0,0 +1,45 @@
import java.util.Scanner;
public class lab1 {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
// 2131 % 7 = 3; C7 = long
long n, m, a, b;
float result, sum;
while(true) {
try {
System.out.println("Введіть n типу long:");
n = scanner.nextLong();
System.out.println("Введіть m типу long:");
m = scanner.nextLong();
System.out.println("Введіть a типу long:");
a = scanner.nextLong();
System.out.println("Введіть b типу long:");
b = scanner.nextLong();
break;
}catch(Exception e){
scanner.nextLine();
System.out.println("Введене неправильне число");
}
}
// 2131 % 5 = 1; O2 = /
// 2131 % 2 = 1; O1 = -
// 2131 % 3 = 1; C = 1
result = 0;
byte C = 1;
for(long i = a; i <= n; i++){
sum = 0;
for(long j = b; j <= m; j++){
if (i - C == 0 || j == 0){
System.out.println("Помилка ділення на 0");
System.exit(0);
}
sum += (float) (i/j)/(i-C);
}
result += sum;
}
System.out.println(result);
}
}

51
src/lab2.java Normal file
View File

@@ -0,0 +1,51 @@
public class lab2 {
public static void main(String[] args){
// 2131 % 7 = 3; C7 = int
int[][] matrix = {
{1,2,3,4,5},
{1,3,5,7,9},
{10,1,20,2,5}
};
int rows = matrix.length;
int column = matrix[0].length;
System.out.println("Матриця:");
for(int i = 0; i < rows; i++){
for (int j = 0; j < column; j++){
System.out.print(matrix[i][j]+" ");
}
System.out.println();
}
System.out.println();
// 2131 % 5 = 1; C5 = транспортування;
int[][] transportMatrix = new int[column][rows];
for(int i = 0; i < rows; i++){
for(int j = 0; j < column; j++){
transportMatrix[j][i] = matrix[i][j];
}
}
System.out.println("Транспонована матриця:");
for (int i = 0; i < column; i++){
for (int j = 0; j < rows; j++){
System.out.print(transportMatrix[i][j]+" ");
}
System.out.println();
}
System.out.println();
// 2131 % 11 = 8; C11 = Знайти середнє значення елементів кожного рядка матриці;
int sum;
for(int i = 0; i < rows; i++){
sum = 0;
for(int j = 0; j < column; j++){
sum += matrix[i][j];
}
System.out.println("Середнє арифметичне " + (i+1) + " строки = " + (float)sum/column);
}
}
}

23
src/lab3.js Normal file
View File

@@ -0,0 +1,23 @@
//C17 = 2131 % 17 = 6; Відсортувати слова заданого тексту за зростанням кількості голосних літер.
import create from 'prompt-sync';
const prompt = create();
class Sentence {
constructor() {
this.sentence = prompt("Input sentence: ");
}
sort() {
const words = this.sentence.split(/[\s.?!,;]/).filter((word) => word);
const vowels = /[AaEeiOoUuYy]/g
const sortedWords = words.sort((first, second) => {
const vowelsOfFirstWord = first.match(vowels)? first.match(vowels): [];
const vowelsOfSecondWord = second.match(vowels)? second.match(vowels): [];
return vowelsOfFirstWord.length-vowelsOfSecondWord.length;
});
return sortedWords.join(' ');
}
}
const sentence = new Sentence;
console.log(sentence.sort())

46
src/lab4.js Normal file
View File

@@ -0,0 +1,46 @@
//C11 = 2131%11 = 8; Визначити клас меблі, який складається як мінімум з 5-и полів.
//Створимо клас меблів
class Furniture{
constructor({model, width, height, length, price}) { //об'єкт класа буде створений на основі об'єкта для зручості, тому використовуємо деструктороване присвоєння, щоб не брати зайве.
this.model = model;
this.width = width;
this.height = height;
this.length = length;
this.price = price;
}
}
//Створимо об'єкти майбутніх об'єктів класу меблі
const chair = {
model: 'chair',
width: 1,
length: 1,
height: 1,
price: 500,
};
const table = {
model: 'table',
width: 3,
length: 2,
height: 1.5,
price: 1000,
};
const wardrobe = {
model: 'wardrobe',
width: 5,
length: 1,
height: 3,
price: 750,
};
//Створимо масив що складається з об'єктів класу
const furniture = [new Furniture(wardrobe), new Furniture(chair), new Furniture(table)];
//Відсрортуємо масив за алфавітним порядком;
console.log(furniture.sort((first, second) => first.model > second.model ? 1 : first.model < second.model ? -1 : 0));
//Відсортуємл масив за ціною за спаданням
console.log(furniture.sort((first, second) => second.price - first.price));

103
src/lab5.js Normal file
View File

@@ -0,0 +1,103 @@
class Text {
constructor(text) {
this.text = [];
const sentences = text.split(/[.?!;]/).filter((sentence) => sentence);
for (const sentence of sentences) {
this.text.push(new Sentence(sentence))
}
}
getText() {
let text = '';
for (const sentence of this.text) {
text += sentence.getSentence() + '. ';
}
return text;
}
getSortedText() {
let words = [];
const vowels = /[AaEeiOoUuYy]/g;
for (const sentence of this.text) {
words = words.concat(sentence.getWords());
}
const sortedWords = words.sort((first, second) => {
const vowelsOfFirstWord = first.match(vowels)? first.match(vowels): [];
const vowelsOfSecondWord = second.match(vowels)? second.match(vowels): [];
return vowelsOfFirstWord.length-vowelsOfSecondWord.length;
});
return sortedWords.join(' ');
}
}
class Sentence {
constructor(sentence) {
this.sentence = [];
const words = sentence.split(/[\s,:]/).filter((word) => word);
for (const word of words) {
this.sentence.push(new Word(word));
}
}
getSentence() {
let sentence = '';
for (const word of this.sentence) {
sentence += word.getWord();
if ( this.sentence[this.sentence.length-1] !== word) sentence += ' ';
}
return sentence;
}
getWords() {
let words = [];
for (const word of this.sentence) {
words.push(word.getWord());
}
return words;
}
}
class Word {
constructor(word) {
this.word = [];
for (const symbol of word) {
if (/[A-Za-z]/.test(symbol)){
this.word.push(new Letter(symbol));
} else if (/[0-9]/.test(symbol)) {
this.word.push(new Number(symbol));
}
}
}
getWord() {
let word = '';
for (const symbol of this.word) {
word += symbol.getSymbol();
}
return word
}
}
class Letter {
constructor(letter) {
this.letter = letter;
}
getSymbol() {
return this.letter;
}
}
class Number {
constructor(number) {
this.number = number;
}
getSymbol() {
return this.number;
}
}
const text = new Text('In late September or October, Martina elevated Constans to co-emperor, but also raised Heraclonas\'s brother Tiberius to co-emperor alongside them. Despite these overtures, Valentinus entered Constantinople shortly thereafter, deposed Heraclonas and Martina, and then elevated Constans to sole emperor. Heraclonas, Martina, Tiberius, and Martinus are said by John of Nikiu to have been escorted forth with insolence. Valentinus had Martinus nose cut off, emasculated him, and then banished his family to Rhodes, where they stayed until their deaths. According to some sources, the stress of the surgery killed Martinus immediately.');
console.log(text.getText());
console.log('\n' + text.getSortedText());

71
src/lab6.js Normal file
View File

@@ -0,0 +1,71 @@
console.log(2131 % 13)
class Room {
constructor(price, ...toys) {
this.toys = toys;
this.price = price;
if (this.getCurrentPrice() > price) throw new SyntaxError('We haven`t money for this');
}
addToy(toy) {
if (this.getCurrentPrice() + toy.getPrice() <= this.price) this.toys.push(toy);
else throw new SyntaxError('We haven`t money for this');
}
getCurrentPrice() {
let sum = 0;
for (const toy of this.toys) {
sum += toy.getPrice();
}
return sum;
}
getSortedToysByPrice() {
const sortedToys = this.toys.copyWithin();
return sortedToys.sort((firstToy, secondToy) => {
return firstToy.getPrice() - secondToy.getPrice();
});
}
getToyByPrice(lowerPrice, upperPrice) {
return this.toys.find((toy) => lowerPrice <= toy.getPrice() && toy.getPrice() <= upperPrice);
}
}
class Toy {
constructor(type, price, group) {
this.type = type;
this.price = price;
this.group = group;
}
getPrice() {
return this.price;
}
}
class Car extends Toy {
constructor(price, group) {
super('car', price, group);
}
}
class Ball extends Toy {
constructor(price, group) {
super('ball', price, group);
}
}
class Doll extends Toy {
constructor(price, group) {
super('doll', price, group);
}
}
const doll = new Doll(200, 'middle');
const ball = new Ball(150, 'young');
const car = new Car(300, 'old');
const room = new Room(1000, doll, ball, car);
console.log(room.getSortedToysByPrice())
console.log(room.getToyByPrice(201, 301));

13
src/test/A.java Normal file
View File

@@ -0,0 +1,13 @@
package test;
public class A {
/*private*/ int f/* = 3*/;
public int getF() {
return f;
}
public void setF(int f) {
this.f = f;
}
}

15
src/test/Main.java Normal file
View File

@@ -0,0 +1,15 @@
package test;
public class Main {
public static void main(String[] args) {
A a = new A();
System.out.println(a.getF());
a.setF(1);
System.out.println(a.getF());
System.out.println(a.f);
int[] array = {1, 2, 1};
System.out.println(array.length);
}
}