diff --git a/golang/Informatics_2024 b/golang/Informatics_2024 new file mode 160000 index 00000000..ea3aab55 --- /dev/null +++ b/golang/Informatics_2024 @@ -0,0 +1 @@ +Subproject commit ea3aab550a1bc9d754d59d45399f2cacba72f8a3 diff --git a/golang/lab4/lab4.go b/golang/lab4/lab4.go index 69edc658..27dc17a7 100644 --- a/golang/lab4/lab4.go +++ b/golang/lab4/lab4.go @@ -1,32 +1,64 @@ +package lab4 -package lab4 - -import ( - "math" +import ( "fmt" + "math" + "strconv" + "isuct.ru/informatics2022/lab8" ) -func CalculateExpression (a float64, x float64) float64 { - return math.Tan(math.Pow(math.Log10(a+x), 3)) / math.Pow(a+x, 2.0/7.0) -} - -func TaskA(a , xi , xk , deltax float64) []float64 { - var values []float64 - for x := xi; x <= xk; x += deltax { - values = append(values, CalculateExpression (a, x)) - } - return values -} - -func TaskB(a float64, x [5]float64) []float64 { + +func CalculateExpression(a float64, x float64) float64 { + return math.Tan(math.Pow(math.Log10(a+x), 3)) / math.Pow(a+x, 2.0/7.0) +} + +func TaskA(a, xi, xk, deltax float64) []float64 { + var values []float64 + for x := xi; x <= xk; x += deltax { + values = append(values, CalculateExpression(a, x)) + } + return values +} + +func TaskB(a float64, x [5]float64) []float64 { var values []float64 for _, value := range x { - values = append(values, CalculateExpression (a, value)) - } + values = append(values, CalculateExpression(a, value)) + } return values } + +func GetInputForTask4() []float64 { + fmt.Println("Введите данные для Xi, Xk, delX и массив для задач A и B") + arr := lab8.RunLab8Tasks() + var input []float64 + for _, values := range arr { + value, _ := strconv.ParseFloat(values, 64) + input = append(input, value) + } + return input +} + func RunLab4Tasks() { a := 2.0 fmt.Println(TaskA(a, 1.08, 1.88, 0.16)) - var s = [5]float64{1.16, 1.35, 1.48, 1.52, 1.96} - fmt.Println(TaskB(a,s)) -} \ No newline at end of file + + var s = [5]float64{1.16, 1.35, 1.48, 1.52, 1.96} + fmt.Println(TaskB(a, s)) + + arr := GetInputForTask4() + values := [5]float64{} + + if len(arr) >= 8 { + copy(values[:], arr[3:8]) + } else { + fmt.Println("Недостаточно элементов в arr для копирования.") + return + } + + ValuesA := TaskA(a, arr[0], arr[1], arr[2]) + ValuesB := TaskB(a, values) + + fmt.Println(ValuesA) + fmt.Println(ValuesB) +} + diff --git a/golang/lab8/lab8.go b/golang/lab8/lab8.go new file mode 100644 index 00000000..12e60bfc --- /dev/null +++ b/golang/lab8/lab8.go @@ -0,0 +1,93 @@ +package lab8 + +import ( + "fmt" + "io" + "os" + "strings" +) + +func MakeNewFile(name string) { + file, err := os.Create(name) + if err != nil { + panic(err) + } + defer file.Close() +} + +func InputData() []string { + var count int + fmt.Print("Введите количество значений: ") + fmt.Fscan(os.Stdin, &count) + var arr []string + var value string + for i := 1; i <= count; i++ { + fmt.Print("Введите значение: ") + fmt.Fscan(os.Stdin, &value) + arr = append(arr, value) + } + return arr +} + +func ReadInputFromFile(name string) []string { + var arr []string + file, err := os.Open(name) + if err != nil { + panic(err) + } + defer file.Close() + for { + data := make([]byte, 64) + for { + n, err := file.Read(data) + if err == io.EOF { + break + } + arr = append(arr, string(data[:n])) + break + } + return arr + } +} + +func WriteInFile(name string, arr []string) { + file, err := os.OpenFile(name, os.O_RDWR, 0666) + if err != nil { + panic(err) + } + defer file.Close() + for _, value := range arr { + file.WriteString(value + "\n") + } +} + + +func SearchInputFromFile(name string, ValueFile string) { + arr := strings.Split( ReadInputFromFile(name)[0], "\n") + for _, value := range arr { + if value == ValueFile { + fmt.Println("Ошибка при поиске в файле") + break + } + } +} + +func RunLab8Tasks() []string { + var NameFile string + fmt.Print("Введите название файла: ") + fmt.Fscan(os.Stdin, &NameFile) + MakeNewFile(NameFile) + + arr := InputData() + WriteInFile(NameFile, arr) + + arr = strings.Split(ReadInputFromFile(NameFile)[0], "\n") + arr = arr[0 : len(arr)-1] + + var Search string + fmt.Print("Введите значение для поиска: ") + fmt.Fscan(os.Stdin, &Search) + SearchInputFromFile(NameFile, Search) + + return arr +} diff --git a/golang/main.go b/golang/main.go index 232912b8..2af9e036 100644 --- a/golang/main.go +++ b/golang/main.go @@ -4,7 +4,8 @@ import ( "fmt" "isuct.ru/informatics2022/lab4" "isuct.ru/informatics2022/lab6" - "isuct.ru/informatics2022/lab7" + "isuct.ru/informatics2022/lab7" + "isuct.ru/informatics2022/lab8" ) @@ -13,4 +14,5 @@ func main() { lab4.RunLab4Tasks() lab6.Runlab6() lab7.RunLab7Tasks() + lab8.RunLab8Tasks() }