diff --git a/golang/laba8/CreateFIle.go b/golang/laba8/CreateFIle.go new file mode 100644 index 00000000..4d6ec17a --- /dev/null +++ b/golang/laba8/CreateFIle.go @@ -0,0 +1,13 @@ +package laba8 + +import ( + "os" +) + +func CreateFile(filename string) (string, error) { + _, _ = os.Stat(filePath + filename) + f, _ := os.Create(filePath + filename) + + defer f.Close() + return filename, nil +} diff --git a/golang/laba8/Input.txt b/golang/laba8/Input.txt new file mode 100644 index 00000000..98c66ef8 --- /dev/null +++ b/golang/laba8/Input.txt @@ -0,0 +1,10 @@ +7.2 +4.2 +1.81 +5.31 +0.7 +2.4 +2.8 +3.9 +4.7 +3.16 \ No newline at end of file diff --git a/golang/laba8/ReaderFile.go b/golang/laba8/ReaderFile.go new file mode 100644 index 00000000..09407b6c --- /dev/null +++ b/golang/laba8/ReaderFile.go @@ -0,0 +1,18 @@ +package laba8 + +import ( + "bufio" + "os" +) + +func ReadDataFromFile(filename string) []string { + var textSlice []string + f, _ := os.OpenFile(filePath+filename, os.O_RDONLY, 0600) + defer f.Close() + fileScanner := bufio.NewScanner(f) + for fileScanner.Scan() { + textSlice = append(textSlice, fileScanner.Text()) + } + + return textSlice +} diff --git a/golang/laba8/SearchingString.go b/golang/laba8/SearchingString.go new file mode 100644 index 00000000..e6335d0d --- /dev/null +++ b/golang/laba8/SearchingString.go @@ -0,0 +1,15 @@ +package laba8 + +func SearchingString(filename, valueForSearch string) bool { + if valueForSearch == "" { + return false + } + values := ReadDataFromFile(filename) + + for _, value := range values { + if value == valueForSearch { + return true + } + } + return false +} diff --git a/golang/laba8/WriterFile.go b/golang/laba8/WriterFile.go new file mode 100644 index 00000000..9d83705d --- /dev/null +++ b/golang/laba8/WriterFile.go @@ -0,0 +1,18 @@ +package laba8 + +import ( + "fmt" + "os" +) + +func WriteDataToFile(filename string) { + f, _ := os.OpenFile(filePath+filename, os.O_WRONLY, 0600) + defer f.Close() + var name string + fmt.Scan(&name) + var surname string + fmt.Scan(&surname) + + f.WriteString(name) + f.WriteString(surname) +} diff --git a/golang/laba8/laba8.go b/golang/laba8/laba8.go new file mode 100644 index 00000000..3b4734e0 --- /dev/null +++ b/golang/laba8/laba8.go @@ -0,0 +1,34 @@ +package laba8 + +import ( + "fmt" +) + +var filePath string = "../golang/laba8/" + +func RunLab8() { + var filename string + fmt.Println("Введите имя файла, в который вы хотите записать данные:") + fmt.Scan(&filename) + name, _ := CreateFile(filename) + + fmt.Println("Введите данные в файл (для завершения ввода введите q):") + WriteDataToFile(name) + + slice := ReadDataFromFile(name) + + fmt.Printf("Чтение файла %s завершено\n", filename) + for _, str := range slice { + fmt.Println(str) + } + + fmt.Println("Введите строку, которую хотите найти в файле: ") + var SearchString string + fmt.Scan(&SearchString) + isFind := SearchingString(name, SearchString) + if isFind { + fmt.Printf("Слово найдено на строке %t", isFind) + } else { + fmt.Println("Слово не найдено") + } +} diff --git a/golang/laba8/laba8tolaba4.go b/golang/laba8/laba8tolaba4.go new file mode 100644 index 00000000..f7fe47de --- /dev/null +++ b/golang/laba8/laba8tolaba4.go @@ -0,0 +1,52 @@ +package laba8 + +import ( + "bufio" + "fmt" + "os" + "strconv" + + "isuct.ru/informatics2022/laba4" +) + +func ReadDataFromFileForLab4(filename string) ([]float64, error) { + f, err := os.Open(filePath + filename) + fmt.Println(err) + if err != nil { + return nil, fmt.Errorf("ошибка открытия файла") + } + fileScanner := bufio.NewScanner(f) + var values []float64 + for fileScanner.Scan() { + chislo, err := strconv.ParseFloat(fileScanner.Text(), 64) + if err != nil { + return nil, fmt.Errorf("ошибка при переводе числа") + } + values = append(values, chislo) + } + return values, nil +} + +func RunLab8forLab4() { + values, _ := ReadDataFromFileForLab4("Input.txt") + + var a float64 = values[0] + var b float64 = values[1] + var taskBslice = values[5:] + fmt.Println("Задача А") + var xn float64 = values[2] + var xk float64 = values[3] + var deltax float64 = values[4] + for _, pair := range laba4.TaskA(a, b, xn, xk, deltax) { + x := pair[0] + y := pair[1] + fmt.Printf("x = %.2f\ty = %f\n", x, y) + } + fmt.Println() + fmt.Println("Задание B") + for _, pair := range laba4.TaskB(a, b, taskBslice) { + x := pair[0] + y := pair[1] + fmt.Printf("x = %.2f\ty = %f\n", x, y) + } +} diff --git a/golang/main.go b/golang/main.go index 60c07d58..058ad2f5 100644 --- a/golang/main.go +++ b/golang/main.go @@ -6,6 +6,7 @@ import ( "isuct.ru/informatics2022/laba4" "isuct.ru/informatics2022/laba6" "isuct.ru/informatics2022/laba7" + "isuct.ru/informatics2022/laba8" ) func main() { @@ -13,4 +14,6 @@ func main() { laba4.Runlab4() laba6.Runlaba6() laba7.RunLaba7() + laba8.RunLab8forLab4() + laba8.RunLab8() }