Не могу решить задачу по GO, тема: условные алгоритмы

Nazar

Новичок
Пользователь
Фев 22, 2022
2
0
1
Здраствуйте, я недавно начал учить GO, пропустил 2 пары и даже после прочтения материала не могу решить данную задачу(Она довольно лёгкая, но я не знаю как написать код)
ЗАДАЧА:
Для натурального числа k напечатать фразу «мы нашли k грибов в лесу», согласовав окончание слова «гриб» с числом k. Обратите внимание, что количество грибов может быть любым и окончание всегда должно выводиться правильно!

Буду очень благодарен тому кто поможет и взамен тоже попытаюсь помочь.
Заранее большое спасибо !!!:)
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Вот пример:
C-подобный:
package main

import "fmt"

func main() {   
    k := 42 // натуральное число k
    var s string = "грибов"
    if k / 10 % 10 != 1 {
        if k % 10 == 1 {
            s = "гриб"
        } else if k % 10 < 5 {
            s = "гриба"
        }
    }
    fmt.Printf("мы нашли %v %v в лесу", k, s)
}
 
  • Мне нравится
Реакции: Nazar

Nazar

Новичок
Пользователь
Фев 22, 2022
2
0
1
Вот пример:
C-подобный:
package main

import "fmt"

func main() {  
    k := 42 // натуральное число k
    var s string = "грибов"
    if k / 10 % 10 != 1 {
        if k % 10 == 1 {
            s = "гриб"
        } else if k % 10 < 5 {
            s = "гриба"
        }
    }
    fmt.Printf("мы нашли %v %v в лесу", k, s)
}
[/C Спасибо большое, сейчас буду пробовать делать для всех цифр. 
[/QUOTE]
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Спасибо большое, сейчас буду пробовать делать для всех цифр.
Чтобы программа корректно обрабатывала все натуральные числа нужно добавить еще одну проверку в строке } else if k % 10 < 5 {.
Так же для проверки можно вынести код в функцию и запустить ее в цикле для диапазона чисел:
C-подобный:
package main

import "fmt"

func main() {   
    for k := 1; k < 200; k ++ {
        printString(k)
    }
}

func printString(k int) {
    var s string = "грибов"
    if k / 10 % 10 != 1 {
        if k % 10 == 1 {
            s = "гриб"
        } else if k % 10 > 1 && k % 10 < 5 {
            s = "гриба"
        }
    }
    fmt.Printf("мы нашли %v %v в лесу\n", k, s)
}
 

Форум IT Специалистов