Сравнение Строк Golang
Напишите программу, которая проверяет правильность расчета на "раз два три".
Пользователь вводит последовательно 3 строки.
если эти строки "раз", "два", "три" - вывести "ОК" (кириллица) если вместо строки "раз" введена "один" - вывести "ОК" (кириллица) если вместо всех слов введены соответствующие числа "1", "2", "3" - вывести "ОК" (кириллица) "НЕ ПРАВИЛЬНО" - во всех остальных случаях
package main
import (
"fmt"
"os"
)
func main() {
var A string
fmt.Fscan(os.Stdin, &A)
if &A == "раз, два, три " {
fmt.Println("ОК")
} else if &A == "один, два, три" {
fmt.Println("ОК")
} else if &A == "1 2 3" {
fmt.Println("ОК")
} else {
fmt.Println("НЕ ПРАВИЛЬНО")
}
}
}
Не пойму как сравнить строки
Ответы (3 шт):
Автор решения: Ainar-G
→ Ссылка
Как-то так. Условие в correct можно написать в одно
выражение, но мне так кажется понятнее:
func correct(lines []string) (ok bool) {
if len(lines) != 3 {
return false
} else if (lines[0] == "один" || lines[0] == "раз") && (lines[1] == "два") && (lines[2] == "три") {
return true
} else if (lines[0] == "1") && (lines[1] == "2") && (lines[2] == "3") {
return true
} else {
return false
}
}
func main() {
var err error
var lines = make([]string, 0, 3)
var s = bufio.NewScanner(os.Stdin)
for i := 0; s.Scan(); i++ {
lines = append(lines, s.Text())
}
if err = s.Err(); err != nil {
log.Fatalf("scanning error: %s\n", err)
}
if !correct(lines) {
log.Fatalln("НЕ ПРАВИЛЬНО")
}
log.Println("ОК")
}
Автор решения: Рома Корегин
→ Ссылка
Можно попробовать так еще, используя только один пакет - fmt.
package main
import "fmt"
func main(){
var val1, val2, val3 string
fmt.Println("Пожалуйста, введите числа или слова ниже:")
fmt.Scanln(&val1)
fmt.Scanln(&val2)
fmt.Scanln(&val3)
if val1 == "Раз" && val2 == "Два" && val3 == "Три" {
fmt.Println("ОК")
} else if val1 == "Один" {
fmt.Println("ОК")
} else {
fmt.Println("НЕПРАВИЛЬНО!")
}
}
Автор решения: Alexandr Sh
→ Ссылка
У меня получилось так (вариант для новичков):
package main
import (
"fmt"
"strings"
)
func main() {
var aArg, bArg, cArg string
var chekSum int
fmt.Scan(&aArg)
if strings.Compare(aArg, "раз") == 0 {
chekSum = chekSum + 1
} else if strings.Compare(aArg, "один") == 0 {
chekSum = chekSum + 1
} else if strings.Compare(aArg, "1") == 0 {
chekSum = chekSum + 1
}
fmt.Scan(&bArg)
if strings.Compare(bArg, "два") == 0 {
chekSum = chekSum + 1
} else if strings.Compare(bArg, "2") == 0 {
chekSum = chekSum + 1
}
fmt.Scan(&cArg)
if strings.Compare(cArg, "три") == 0 {
chekSum = chekSum + 1
} else if strings.Compare(cArg, "3") == 0 {
chekSum = chekSum + 1
}
if chekSum == 3 {
fmt.Println("ОК")
return
}
fmt.Println("НЕ ПРАВИЛЬНО")
}