From 309e2f781402bc92b2c3caae558d11f821541e29 Mon Sep 17 00:00:00 2001 From: ruslan709 <77974170+ruslan709@users.noreply.github.com> Date: Sun, 15 Dec 2024 21:55:58 +0300 Subject: [PATCH] first commit (#418) * first commit * fixed * fixed * fixed * fixed * fixed * fixed * fixed * fixed * fixed * fixed * fixed * fixed * fixed * fixed * fixed * fixed * fixed * fixed * fixed * fixed * fixed * fixed * fixed * fixed --- golang/labs/{ => lab4}/lab4.go | 15 ++- golang/labs/{ => lab6}/lab6.go | 2 +- golang/labs/{laba7 => lab7}/clothing.go | 2 +- golang/labs/{laba7 => lab7}/electronics.go | 2 +- golang/labs/{laba7 => lab7}/food.go | 2 +- golang/labs/{laba7 => lab7}/lab7.go | 10 +- golang/labs/{laba7 => lab7}/product.go | 2 +- golang/labs/lab8/input.txt | 10 ++ golang/labs/lab8/lab8-1.go | 52 +++++++++ golang/labs/lab8/lab8-2.go | 116 +++++++++++++++++++++ golang/main.go | 13 ++- golang/tests/lab4_test.go | 4 +- python/src/main.py | 1 + 13 files changed, 211 insertions(+), 20 deletions(-) rename golang/labs/{ => lab4}/lab4.go (72%) rename golang/labs/{ => lab6}/lab6.go (98%) rename golang/labs/{laba7 => lab7}/clothing.go (97%) rename golang/labs/{laba7 => lab7}/electronics.go (97%) rename golang/labs/{laba7 => lab7}/food.go (97%) rename golang/labs/{laba7 => lab7}/lab7.go (73%) rename golang/labs/{laba7 => lab7}/product.go (96%) create mode 100644 golang/labs/lab8/input.txt create mode 100644 golang/labs/lab8/lab8-1.go create mode 100644 golang/labs/lab8/lab8-2.go diff --git a/golang/labs/lab4.go b/golang/labs/lab4/lab4.go similarity index 72% rename from golang/labs/lab4.go rename to golang/labs/lab4/lab4.go index 6dae5643..16ac9f26 100644 --- a/golang/labs/lab4.go +++ b/golang/labs/lab4/lab4.go @@ -1,8 +1,10 @@ -package labs +package lab4 import ( "fmt" "math" + + "isuct.ru/informatics2022/labs/lab8" ) func CalculateY(x float64, a float64, b float64) float64 { @@ -29,13 +31,18 @@ func TaskB(a, b float64, values []float64) [][]float64 { } func RunLab4() { - resultsA := TaskA(0.05, 0.06, 0.2, 0.95, 0.15) + params, err := lab8.ReadDataFromFile("input.txt") + if err != nil { + fmt.Println("Ошибка:", err) + return + } + + resultsA := TaskA(params.A, params.B, params.Xn, params.Xk, params.Deltax) for _, result := range resultsA { fmt.Printf("x: %.2f, y: %.2f\n", result[0], result[1]) } - arr := []float64{0.15, 0.26, 0.37, 0.48, 0.56} - resultsB := TaskB(0.2, 0.95, arr) + resultsB := TaskB(params.A, params.B, params.Slicex) for _, result := range resultsB { fmt.Printf("x: %.2f, y: %.2f\n", result[0], result[1]) } diff --git a/golang/labs/lab6.go b/golang/labs/lab6/lab6.go similarity index 98% rename from golang/labs/lab6.go rename to golang/labs/lab6/lab6.go index 325b10db..c4c2bb7a 100644 --- a/golang/labs/lab6.go +++ b/golang/labs/lab6/lab6.go @@ -1,4 +1,4 @@ -package labs +package lab6 import ( "fmt" diff --git a/golang/labs/laba7/clothing.go b/golang/labs/lab7/clothing.go similarity index 97% rename from golang/labs/laba7/clothing.go rename to golang/labs/lab7/clothing.go index 5e7e527b..c6856e1d 100644 --- a/golang/labs/laba7/clothing.go +++ b/golang/labs/lab7/clothing.go @@ -1,4 +1,4 @@ -package laba7 +package lab7 import ( "fmt" diff --git a/golang/labs/laba7/electronics.go b/golang/labs/lab7/electronics.go similarity index 97% rename from golang/labs/laba7/electronics.go rename to golang/labs/lab7/electronics.go index ea6b6caa..2fc0c20f 100644 --- a/golang/labs/laba7/electronics.go +++ b/golang/labs/lab7/electronics.go @@ -1,4 +1,4 @@ -package laba7 +package lab7 import ( "fmt" diff --git a/golang/labs/laba7/food.go b/golang/labs/lab7/food.go similarity index 97% rename from golang/labs/laba7/food.go rename to golang/labs/lab7/food.go index 9471ea24..fb0f61d2 100644 --- a/golang/labs/laba7/food.go +++ b/golang/labs/lab7/food.go @@ -1,4 +1,4 @@ -package laba7 +package lab7 import ( "fmt" diff --git a/golang/labs/laba7/lab7.go b/golang/labs/lab7/lab7.go similarity index 73% rename from golang/labs/laba7/lab7.go rename to golang/labs/lab7/lab7.go index ea19ab49..76bdd1c7 100644 --- a/golang/labs/laba7/lab7.go +++ b/golang/labs/lab7/lab7.go @@ -1,4 +1,4 @@ -package laba7 +package lab7 import ( "fmt" @@ -15,17 +15,19 @@ func GetFinalPrice(products []Product) float64 { func RunLab7() { product1 := &Electronics{Name: "Телефон", Price: 20, Brand: "Iphone", Model: "5s"} if err := product1.applyDiscount(25); err != nil { - fmt.Println(err) + fmt.Println("Ошибка при применении скидки к продукту 1:", err) return } + product2 := &Clothing{Name: "Рубашка", Price: 14.32, Size: "L", Color: "white"} if err := product2.applyDiscount(10); err != nil { - fmt.Println(err) + fmt.Println("Ошибка при применении скидки к продукту 2:", err) return } + product3 := &Food{Name: "Яблоко", Price: 2.35, Weight: 1} if err := product3.applyDiscount(15); err != nil { - fmt.Println(err) + fmt.Println("Ошибка при применении скидки к продукту 3:", err) return } diff --git a/golang/labs/laba7/product.go b/golang/labs/lab7/product.go similarity index 96% rename from golang/labs/laba7/product.go rename to golang/labs/lab7/product.go index e39cbffd..187a4416 100644 --- a/golang/labs/laba7/product.go +++ b/golang/labs/lab7/product.go @@ -1,4 +1,4 @@ -package laba7 +package lab7 import ( "errors" diff --git a/golang/labs/lab8/input.txt b/golang/labs/lab8/input.txt new file mode 100644 index 00000000..26510dc6 --- /dev/null +++ b/golang/labs/lab8/input.txt @@ -0,0 +1,10 @@ +0.05 +0.06 +0.2 +0.95 +0.15 +0.15 +0.26 +0.37 +0.48 +0.56 diff --git a/golang/labs/lab8/lab8-1.go b/golang/labs/lab8/lab8-1.go new file mode 100644 index 00000000..f209fff1 --- /dev/null +++ b/golang/labs/lab8/lab8-1.go @@ -0,0 +1,52 @@ +package lab8 + +import ( + "bufio" + "fmt" + "os" + "strconv" +) + +type Parameters struct { + A float64 + B float64 + Xn float64 + Xk float64 + Deltax float64 + Slicex []float64 +} + +func ReadDataFromFile(filename string) (Parameters, error) { + file, err := os.Open(filename) + if err != nil { + return Parameters{}, fmt.Errorf("ошибка открытия файла: %w", err) + } + defer file.Close() + + scanner := bufio.NewScanner(file) + var values []float64 + for scanner.Scan() { + line := scanner.Text() + num, err := strconv.ParseFloat(line, 64) + if err != nil { + return Parameters{}, fmt.Errorf("ошибка парсинга float '%s': %w", line, err) + } + values = append(values, num) + } + + if err := scanner.Err(); err != nil { + return Parameters{}, fmt.Errorf("ошибка чтения файла: %w", err) + } + if len(values) < 6 { + return Parameters{}, fmt.Errorf("нехватает значений! попробуй еще раз") + } + params := Parameters{ + A: values[0], + B: values[1], + Xn: values[2], + Xk: values[3], + Deltax: values[4], + Slicex: values[5:], + } + return params, nil +} diff --git a/golang/labs/lab8/lab8-2.go b/golang/labs/lab8/lab8-2.go new file mode 100644 index 00000000..1cdad25d --- /dev/null +++ b/golang/labs/lab8/lab8-2.go @@ -0,0 +1,116 @@ +package lab8 + +import ( + "bufio" + "fmt" + "os" + "strings" +) + +func CreateFile(filename string) (string, error) { + if _, err := os.Stat(filename); err == nil { + return "", fmt.Errorf("файл %s уже существует", filename) + } else if !os.IsNotExist(err) { + return "", fmt.Errorf("ошибка проверки существования файла: %w", err) + } + file, err := os.Create(filename) + if err != nil { + return "", fmt.Errorf("ошибка создания файла: %w", err) + } + defer file.Close() + return filename, nil +} + +func WriteToFile(filepath string, content string) error { + file, err := os.OpenFile(filepath, os.O_APPEND|os.O_WRONLY, 0644) + if err != nil { + return fmt.Errorf("ошибка открытия файла для записи: %w", err) + } + defer file.Close() + + _, err = file.WriteString(content) + if err != nil { + return fmt.Errorf("ошибка записи в файл: %w", err) + } + return nil +} + +func ReadFile(filepath string) (string, error) { + fileData, err := os.ReadFile(filepath) + if err != nil { + return "", fmt.Errorf("ошибка чтения файла: %w", err) + } + return string(fileData), nil +} + +func SearchInFile(filedata string, searchText string) bool { + return strings.Contains(filedata, searchText) +} + +func GetUserInput() (string, int, string, string, string) { + reader := bufio.NewReader(os.Stdin) + + fmt.Print("Введите имя: ") + name, _ := reader.ReadString('\n') + name = strings.TrimSpace(name) + + fmt.Print("Введите возраст: ") + var age int + fmt.Scanf("%d\n", &age) + + fmt.Print("Введите город: ") + city, _ := reader.ReadString('\n') + city = strings.TrimSpace(city) + + fmt.Print("Введите институт, в котором вы учитесь: ") + university, _ := reader.ReadString('\n') + university = strings.TrimSpace(university) + + fmt.Print("Введите любой текст: ") + additionalText, _ := reader.ReadString('\n') + additionalText = strings.TrimSpace(additionalText) + + return name, age, city, university, additionalText +} + +func RunFileLab() { + reader := bufio.NewReader(os.Stdin) + fmt.Print("Введите имя файла: ") + filename, _ := reader.ReadString('\n') + filename = strings.TrimSpace(filename) + + filePath, err := CreateFile(filename) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + + name, age, city, university, additionalText := GetUserInput() + + content := fmt.Sprintf("Имя: %s\nВозраст: %d\nГород: %s\nУниверситет: %s\nДополнительный текст: %s\n", name, age, city, university, additionalText) + err = WriteToFile(filePath, content) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + + fmt.Println("Данные успешно записаны в файл", filename) + + fileData, err := ReadFile(filePath) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + fmt.Println("Содержимое файла:", fileData) + + var searchText string + fmt.Print("Введите текст для поиска: ") + searchText, _ = bufio.NewReader(os.Stdin).ReadString('\n') + searchText = strings.TrimSpace(searchText) + + if SearchInFile(fileData, searchText) { + fmt.Println("Текст найден в файле") + } else { + fmt.Println("Текст не найден в файле") + } +} diff --git a/golang/main.go b/golang/main.go index c6852dcf..b82e96c3 100644 --- a/golang/main.go +++ b/golang/main.go @@ -3,13 +3,16 @@ package main import ( "fmt" - "isuct.ru/informatics2022/labs" - "isuct.ru/informatics2022/labs/laba7" + "isuct.ru/informatics2022/labs/lab4" + "isuct.ru/informatics2022/labs/lab6" + "isuct.ru/informatics2022/labs/lab7" + "isuct.ru/informatics2022/labs/lab8" ) func main() { fmt.Println("Kulikov Ruslan Igorevich") - labs.RunLab4() - labs.RunLab6() - laba7.RunLab7() + lab8.RunFileLab() + lab4.RunLab4() + lab6.RunLab6() + lab7.RunLab7() } diff --git a/golang/tests/lab4_test.go b/golang/tests/lab4_test.go index c2ade4c5..fc918572 100644 --- a/golang/tests/lab4_test.go +++ b/golang/tests/lab4_test.go @@ -5,7 +5,7 @@ import ( "testing" "github.com/stretchr/testify/assert" - "isuct.ru/informatics2022/labs" + "isuct.ru/informatics2022/labs/lab4" ) func TestEquation(t *testing.T) { @@ -31,7 +31,7 @@ func TestEquation(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - result := labs.CalculateY(tt.x, a, b) + result := lab4.CalculateY(tt.x, a, b) if math.IsNaN(tt.x) { assert.True(t, math.IsNaN(result), "ожидалось NaN %f", result) } else { diff --git a/python/src/main.py b/python/src/main.py index e37a77c0..3f78c777 100644 --- a/python/src/main.py +++ b/python/src/main.py @@ -1,3 +1,4 @@ + def summ(a: int, b: int) -> int: return a + b