Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "fmt"
- "strconv"
- "strings"
- "regexp"
- )
- const (
- isDebug bool = false
- )
- var (
- notations = map[int]bool {
- 2 : true,
- 10 : true,
- }
- )
- func main(){
- var num int
- /*
- fmt.Print("Введите число входных переменных: ")
- fmt.Scanf("%d", &num)
- MakeTable(num)
- fmt.Printf("Кол-во наборов: %d", NaturStepen(2, num))
- bufio.NewReader(os.Stdin).ReadBytes('\n')
- //fmt.Println()
- */
- start:
- for {
- fmt.Print("Введите число входных переменных: ")
- fmt.Scanf("%d\n", &num)
- //fmt.Println("Первый шаг: " + strconv.Itoa(num))////
- var amountSets int = NaturStepen(2, num)
- sets := make(map[string]int)
- // Убрать!!!
- for i := 0; i < amountSets; i++ {
- sets[IntToBinaryWithSize(num, i)] = 0
- }
- if isDebug {
- fmt.Println(sets)
- }
- var notation int
- for {
- fmt.Print("В какой системе счисления собираетесь выбирать наборы? ")
- fmt.Scanf("%d\n", ¬ation)
- if !notations[notation] {
- fmt.Println("Вы не можете выбрирать наборы в этой системе счисления. Попробуйте ещё раз.")
- continue
- } else {
- break
- }
- }
- for {
- var selectedSet string
- fmt.Print("Напишите номер набора, который хотите просмотреть: ")
- fmt.Scanf("%s\n", &selectedSet)
- //fmt.Println("Второй шаг: " + selectedSet)//////
- var intSelectedSet int
- if selectedSet == "exit" {
- break
- } else {
- hasLiterals, err := regexp.MatchString(`[a-z]|[A-Z]|\.|\,+`, selectedSet)
- if err != nil {
- panic(err)
- } else if hasLiterals {
- fmt.Println("Ошибка. Можно вводить только числа!")
- continue
- } else {
- fmt.Println("Выбранный набор: " + selectedSet)
- if notation == 10 {
- intSelectedSet, err = strconv.Atoi(selectedSet)
- if err != nil {
- panic(err)
- } else if intSelectedSet >= amountSets {
- fmt.Println("Такого набора нет в заданной коллекции наборов")
- continue
- }
- } else if notation == 2 {
- if len(selectedSet) > num {
- fmt.Println("Такого набора нет в заданной коллекции наборов")
- continue
- } else if len(selectedSet) < num {
- selectedSet = ConvertToSize(num, selectedSet)
- }
- }
- }
- }
- var binarySeenSet string
- if notation == 10 {
- binarySeenSet = IntToBinaryWithSize(num, intSelectedSet)
- } else if notation == 2 {
- binarySeenSet = selectedSet
- }
- fmt.Print("Набор: ", binarySeenSet, ". Задайте значение функции при данном наборе, введя 0 или 1.",
- "\nЕсли вы уже определились со значениями на каждом из наборов, то введите exit: ")
- var answer string
- fmt.Scanf("%s\n", &answer)
- fmt.Println("Ваш ответ:", answer)
- if answer == "0" || answer == "1" {
- sets[binarySeenSet], _ = strconv.Atoi(answer)
- fmt.Println(binarySeenSet, sets[binarySeenSet])
- } else {
- fmt.Println("Неверная команда")
- }
- }
- fmt.Println("Я вышел, сука!")
- for key, value := range sets {
- fmt.Println(key, value)
- }
- var answer string
- fmt.Print("Вы хотите составить ещё таблицу? ")
- for {
- fmt.Scanf("%s", &answer)
- switch answer {
- case "да":
- goto start
- case "нет":
- goto exit
- default:
- fmt.Println("Неверно введена команда. Попробуйте ещё раз: ")
- continue
- }
- }
- }
- exit:
- }
- func ConvertToSize(neededSize int, lowSizeString string) string {
- if len(lowSizeString) < neededSize {
- var difference int = neededSize - len(lowSizeString)
- return strings.Repeat("0", difference) + lowSizeString
- }
- return lowSizeString
- }
- func IntToBinaryWithSize(neededSize int, number int) string {
- return ConvertToSize(neededSize, strconv.FormatInt(int64(number), 2))
- }
- func PrintTable(num int) {
- var iters int = NaturStepen(2, num)
- for i := 0; i < int(iters); i++ {
- fmt.Printf("%" + "00" + strconv.Itoa(num) + "b\n", i)
- }
- }
- func MakeTable(num int) {
- var iters int = NaturStepen(2, num)
- //numSet := []string{}
- for i := 0; i < int(iters); i++ {
- fmt.Printf("%" + "00" + strconv.Itoa(num) + "b\n", i)
- }
- }
- func NaturStepen(a int, b int) int {
- var result int = 1
- for i := 0; i < b; i++ {
- result *= a
- }
- return result
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement