- Notifications
You must be signed in to change notification settings - Fork2
pshptr/ScalaLabs
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Лабораторные работы по дисциплине "ф-прог" (Функциональное программирование) Scala 3, 3 курс 5 семестр БГУИР КСиС ВМСиС 2023.
Мною выполнялись следующие лабораторные работы по варинатам соответственно: лр 1 вар 3, лр 2 вар 2, лр 3 вар 1, лр 4 вар 1, лаб 5 вар общий.
- lecture 1
- lecture 2
- lecture 3 zip
- lecture 4 string
- lecture 5 lazy val
- lecture 6 string builder
- lecture 7 regular expressions
- lecture 8 02.11.2023
- lecture 9 09.11.2023
- lecture 10 analytics 16.11.2023
- lecture 11 nlp 23.11.2023
- lecture 12 07.12.2023
Построить генератор случайных чисел по следующей схеме. Вводите 10-значное число с клавиатуры. Формируете два новых целых числа A и B:первое A состоит из первых пяти цифр, второе B – из последних цифр введенного числа, начиная с шестой.
Перемножаете числа A и B друг на друга. Первые три цифры результата С, будучи поделенными на 1000, дают первое случайное число REZ.
Чтобы сформировать следующее случайное число, прибавляете к Z число С и повторяете процесс. Формируете два новых целых числа A и B:первое A состоит из первых пяти цифр, второе B – из последних цифр числа Z, начиная с шестой.
Перемножаете числа A и B друг на друга. Первые три цифры результата С, будучи поделенными на 1000, дают второе случайное число.
Чтобы сформировать следующее случайное число, прибавляете к Z число С и повторяете процесс. Сформируйте 5 случайных чисел.Если z отрицателен, то это значит, что надо заменить первую цифру единицы на ноль и убрать знак “минус”, кроме того,нужно поддерживать длину строки не меньше 10 символов. Сказанное, демонстрируется следующим примером:
objectMain234 {defmain(args:Array[String]):Unit= { print("Enter the number:")varnumberString=""vara=0varb=0varc=0varrez:Float=0.0varz=0 numberString= scala.io.StdIn.readLine()if ( (numberString.length()<=10)) { println("Incorrect number"); sys.exit(0) }for (i<-1 to10) { a= numberString.substring(0,5).toInt//println(numberString.length()); b= numberString.substring(5,10).toInt c= a*b rez=c.toString().substring(0,3).toFloat/1000 z+=c println(a); println(b); println(c); println(rez); println("z="+ z) numberString= numberString.substring(1,numberString.length()-1) numberString="011"+z } } }
Использовать предыдущий пример, но только число А получается из цифр, стоящих на четных позициях, а В-на нечетных.
defsubstringFromSymbolsAtEvenPositions(str:String):String= {valresult=newStringBuilderfor (i<- str.indicesif i%2==1) { result.append(str(i)) } result.toString() }objectMain234 {defmain(args:Array[String]):Unit= {valoriginalString="1234567890"valsubstring= substringFromSymbolsAtEvenPositions(originalString) println(substring) } }// Сформируйте по этой схеме 5 случайных чисел.
Построить генератор случайных чисел по следующей схеме. Вводите 10-значное число Z с клавиатуры. Формируете два новых целых числа A и B:первое A состоит из первых пяти цифр, второе B – из последних цифр числа Z, начиная с шестой.
Дописываете к числу В число А. Получаете число W. Находите С= ZW. Первые три цифры результата С, будучи поделенными на 1000, дают первое случайное число REZ.
Чтобы сформировать следующее случайное число, формируете два новых целых числа A и B: первое A состоит из первых пяти цифр, второе B – из последних цифр числа C,начиная с шестой. Дописываете к числу В число А. Получаете число W. Находите C= CW. Первые три цифры результата C, будучи поделенными на 1000,дают второе случайное число REZ.Сформируйте 3 случайных чисел по этой схеме.
Построить генератор случайных чисел по следующей схеме. Вводите 16-значное число Z с клавиатуры. Формируете два новых целых числа A и B:первое A состоит из первых восьми цифр, второе B – из последних цифр числа Z, начиная с девятой.
Перемножаете числа A и B друг на друга, получаем число С. Первые три цифры результата С, будучи поделенными на 1000, дают первое случайное число REZ.Чтобы сформировать следующее случайное число, умножаете Z на число С и оставляете 16 цифр в результате. Повторяете процесс для сформированного таким образом числа Z.Формируете два новых целых числа A и B: первое A состоит из первых восьми цифр, второе B – из последних цифр числа Z, начиная с девятой.
Перемножаете числа A и B друг на друга. Первые три цифры результата С, будучи поделенными на 1000, дают второе случайное число.Чтобы сформировать следующее случайное число, умножаете Z на число С и повторяете процесс. Сформируйте 5 случайных чисел.
- Написать функцию для подсчета суммы элементов списка, значение которых не превосходит 10. Список задать самостоятельно.
- Написать функцию для подсчета суммы первых трех элементов списка из 10 элементов. Список задать самостоятельно.
- Написать функцию для отыскания (минимального) индекса максимального элемента списка. Список задать самостоятельно.
- Написать функцию для проверки того, что список упорядочен по возрастанию. Список задать самостоятельно.
- Написать функцию для проверки наличия одинаковых элементов в списке. Список задать самостоятельно. Функция возвращает значение Да или Нет
- Написать функцию для подсчета суммы отрицательных элементов списка. Список задать самостоятельно.
- Написать функцию для подсчета суммы последних трех элементов списка из 10 элементов. Список задать самостоятельно.
- Написать функцию для отыскания индексов всех максимальных элементов списка. Список задать самостоятельно.
- Написать функцию для проверки того, что список не упорядочен ни по возрастанию, ни по убыванию. Список задать самостоятельно.
- Написать функцию для проверки наличия трех одинаковых элементов в списке. Список задать самостоятельно. Функция возвращает значение такого элемента.
- Написать функцию для подсчета суммы элементов списка, значение которых лежит в диапазоне [0,5]. Список задать самостоятельно.
- Написать функцию для подсчета суммы элементов списка с номерами, содержащимися в другом списке. Список задать самостоятельно.
- Написать функцию для отыскания индекса минимального элемента списка. Список задать самостоятельно.
- Написать функцию для проверки того, что элементы списка не превосходят заданной величины. Список задать самостоятельно.
- Написать функцию для подсчета числа элементов списка, которые не превосходят заданной величины. Список задать самостоятельно.
- Написать функцию для подсчета суммы элементов списка, значение которых по модулю не превосходит 5. Список задать самостоятельно.
- Написать функцию для подсчета суммы каждого второго элемента списка из 10 элементов. Список задать самостоятельно.
- Написать функцию для отыскания индекса элемента списка, наименее отклоняющегося от среднего значения по списку. Список задать самостоятельно.
- Написать функцию для проверки того, что список содержит квадрат одного из своих элементов. Список задать самостоятельно.
- Написать функцию для проверки наличия трех разных элементов в списке. Список задать самостоятельно. Функция возвращает значение Да или Нет
- Дан текст: ‘Hello to everybody’. C помощью техники регулярных выражений заменить латинские буквы на русские (или на цифры, если русский шрифт не поддерживается)
- Найти в тексте “When executing the exercise extract all extra words” все слова, начинающиеся на ext.
- В тексте ‘A big round ball fall to the ground’ заменить артикль the на a.
- Записать все слова в тексте в обратном порядке.
- Дан текст: ‘Hello to everybody’. Выбросить все гласные.
- Дан текст: ‘Hello to everybody’. Удвоить каждую букву в слове
- Дан текст: ‘Hello to everybody’. Удалить все вхождения буквы y
- Дан текст: ‘Hello to everybody’. Вставить слова with heartness чтобы получить
- Hello with heartness to everybody
- Дан текст: ‘1+1=2’. C помощью техники регулярных выражений заменить цифры на слова: 1- one, 2 - two
- Найти в тексте ‘Being quiet buetiful girl she never thought of buety’ все слова, начинающиеся на bue.
- В тексте ‘one plus one is something’ заменить one на two.
- Поменять местами первое и последнее слово в тексте world is nice.
- Дан текст: ‘Hello to all my friends’. Выбросить все согласные.
- Дан текст: ‘Hello to everybody’. Удалить каждую вторую букву в слове
- Дан текст: ‘Hello to everybody’. Удалить все вхождения буквы e
- Дан текст: ‘Be healthy’. Вставить слова always чтобы получить Be always healthy
- Дан текст: ‘Passport AB-123-456’. C помощью техники регулярных выражений найти числа в этом тексте
- Найти в тексте ‘Being strong means nothing’ все слова, заканчивающиеся на ing.
- В тексте ‘123+723=846’ заменить 3 на 4, 6 – на 8.
- Записать все слова в тексте в случайном порядке. Текст: big dreadful dog runs after small poor cat. Всех слов 8. Номера 1,2,3, …,8.
- Заменить слово с номером 1 на слово с номером 7, слово с номером 2 на слово с номером 6, слово с номером 4 на слово с номером 5.Замена обоюдная, то есть слова просто меняются местами.
- Дан текст: ‘Hello to everybody’. Выбросить каждую третью букву.
- Дан текст: ‘Hello to everybody’. Удвоить каждую букву в слове
- Дан текст: ‘Hello to everybody’. Удалить все вхождения буквы o
- Дан текст: ‘Hello to everybody Katty, Mikky’. Вывести все слова, начинающиеся с заглавной буквы.
- Дан текст: ‘Passport AB-123-436’. C помощью техники регулярных выражений найти число вхождений цифры 3.
- Дан текст: ‘Passport AB-123-436’. C помощью техники регулярных выражений найти сумму всех цифр в тексте.
- В тексте ‘123+723=846’ выделить все символы арифметических операций.
- Записать все слова в тексте в случайном порядке. Текст: big black cat runs after small poor catty. Всех слов 8. Номера 1,2,3, …,8.
- Заменить слово с номером 1 на слово с номером 4, слово с номером 2 на слово с номером 7, слово с номером 3 на слово с номером 6.Замена обоюдная, то есть слова просто меняются местами.
- Дан текст: ‘Hello to Ronny old nail’. Найти удвоенные вхождения согласных.
- Дан текст: ‘Hello to Ronny old nail’. Найти число слов, записанных с большой буквы.
- Дан текст: ‘Hello to everybody’. Подсчитать число всех вхождений буквы o
- Дан текст: ‘Hello agaiN to everybody Katty, Mikky’. Вывести все слова, начинающиеся со строчной буквы.
- Создать собственный текстовый файл на английском или немецком языке – 4-5 предложений.
- Вывести все слова из текстового файла, исключая stop-слова
- Вывести все слова, содержащие букву t
- Вывести все слова, заканчивающиеся на ing
- Вывести все слова вторая буква которых а
- Вывести все слова, последняя буква которых s
- Вывести каждое второе слово
- Создать собственный текстовый файл на английском или немецком языке – 4-5 предложений. Тема - программирование
- Вывести все слова из текстового файла, исключая stop-слова
- Вывести все слова, содержащие вхождение prog
- Вывести все слова, заканчивающиеся на ion
- Вывести все слова третья буква которых r
- Вывести все слова, содержащие как минимум две буквы e
- Вывести последнее слово
- Создать собственный текстовый файл на английском или немецком языке – 4-5 предложений. Тема - спорт
- Вывести все слова из текстового файла, исключая stop-слова
- Вывести все слова, содержащие вхождение ball или sport
- Вывести все слова, заканчивающиеся на ion
- Вывести все слова третья буква которых c
- Вывести все слова, длина которых больше 4
- Вывести предпоследнее слово
- Создать собственный текстовый файл на английском или немецком языке – 4-5 предложений. Тема - авто
- Вывести все слова из текстового файла, исключая stop-слова
- Вывести все слова, содержащие вхождение car или avto
- Вывести все слова, заканчивающиеся на my
- Вывести все слова третья буква которых d
- Вывести все слова, у которых три и более гласных
- Вывести второе слово
1-е задание: написать 2 предложения на английском языке и удалить оттуда все пробелы между словами через регулярные выражения двумя разными способами.
valsentences=Seq("This is the first sentence.","Here is the second sentence.")valsentenceRDD= spark.sparkContext.parallelize(sentences)valsentenceWithoutSpaces1= sentenceRDD.map(sentence=> sentence.replaceAll("",""))sentenceWithoutSpaces1.collect().foreach(println)valsentenceWithoutSpaces2= sentenceRDD.map(sentence=> sentence.split("").mkString(""))sentenceWithoutSpaces2.collect().foreach(println)________________________________________________________________________________________valsentences=Seq("This is the first sentence.","Here is the second sentence.")valsentenceRDD= spark.sparkContext.parallelize(sentences)valsentencesWithoutSpaces= sentenceRDD.map(sentence=> sentence.replaceAll("\\s",""))sentencesWithoutSpaces.collect().foreach(println)
2-е задание: в слове mother утроить букву t.
valword="mother"valwordWithTripleT= word.replace("t","ttt")println(wordWithTripleT)
3-e задание: удалить все гласные во всех словах из двух английских предложений из 1-го задания.
valsentences=Seq("This is the first sentence.","Here is the second sentence.")valsentenceRDD= spark.sparkContext.parallelize(sentences)valvowels="aeiouAEIOU"valwordsWithoutVowels= sentenceRDD.flatMap(sentence=> {valwords= sentence.split("") words.map(word=> word.replaceAll(s"[$vowels]",""))})wordsWithoutVowels.collect().foreach(println)____________________________________________________________________________________
importjava.awt.event.{ActionEvent,ActionListener}importjavax.swing.{JButton,JFrame,JPanel,SwingUtilities}objectButtonModule {defmain(args:Array[String]):Unit= {SwingUtilities.invokeLater(()=> {valframe=newJFrame("My Application") frame.setSize(300,200) frame.setLocationRelativeTo(null)valpanel=newJPanel()valbutton=newJButton("Click me!") panel.add(button) button.addActionListener(newActionListener {overridedefactionPerformed(e:ActionEvent):Unit= { println("Hello, world!") } }) frame.add(panel) frame.setVisible(true) }) }}// Наше приложение таковоimportjava.awt.event.{ActionEvent,ActionListener}importjavax.swing.{JButton,JFrame,JPanel,SwingUtilities}importjava.awt.Dimensionimportjavax.swing.{JFrame,JLabel,JTextField,JPanel,SwingUtilities}importjava.sql.{Connection,DriverManager,ResultSet}importjava.awt.ColorobjectButtonModule {valframe=newJFrame("My Application") frame.setSize(800,600) frame.setLayout(null)defmain(args:Array[String]):Unit= {SwingUtilities.invokeLater(()=> {// val panel = new JPanel()vallabel1=newJLabel("Title")vallabel2=newJLabel("Price") label1.setBounds(50,120,100,20) label2.setBounds(200,120,70,20)valbutton1=newJButton("Insert")valbutton2=newJButton("Select")valtextField=newJTextField(20)valtextField2=newJTextField(20) button1.setBounds(20,80,120,20) button2.setBounds(150,80,250,20) textField.setBounds(20,150,130,20) textField2.setBounds(160,150,130,20) frame.add(button1) frame.add(button2) frame.add(label1) frame.add(textField) frame.add(label2) frame.add(textField2) button1.addActionListener(newActionListener {overridedefactionPerformed(e:ActionEvent):Unit= {valurl="jdbc:mysql://localhost:3306/mydb"valusername="root"valpassword="1"Class.forName("com.mysql.jdbc.Driver")// Class.forName("org.gjt.mm.mysql.Driver")valconn=DriverManager.getConnection(url, username, password)try {valstmt= conn.createStatement()valrs= stmt.execute("INSERT INTO sclad VALUES ('"+ textField.getText+"',"+ textField2.getText+")") textField2.setText("") textField.setText("Added record") }finally { conn.close() }// textField.setText("problems") } }) button2.addActionListener(newActionListener {overridedefactionPerformed(e:ActionEvent):Unit= {//////// {valurl="jdbc:mysql://localhost:3306/mydb"valusername="root"valpassword="1"Class.forName("com.mysql.jdbc.Driver")valconn=DriverManager.getConnection(url, username, password)try {valstmt= conn.createStatement()valprod_name= textField.getText().toString().trim()valrs= stmt.executeQuery("SELECT * FROM sclad WHERE product = '"+prod_name+"'")while (rs.next()) {valname= rs.getString("product")valprice= rs.getInt("price")// println(s"name=$name, price=$price") textField2.setText(""+price) } }finally { conn.close() }}///////// textField.setText("Hello World, You say") } }) frame.setBackground(Color.BLUE) frame.setLocationRelativeTo(null) frame.setVisible(true) }) }}
Разберитесь с этим приложением.
- Расширить количество столбцов таблицы sclad, добавив поле количество товара на складе.
- Вывести товар, дающий максимальную прибыль (количество*цену).
- Выбрать товар по ограничению (не меньше такой-то величины).