Внутри функции с клавиатуры через пробел вводятся три вещественных числа, при этом первое число гарантированно не равно нулю. Функция должна вывести на экран через пробел по возрастанию корни уравнения (один или два), или два числа 0, если корней нет.
Функция ничего не должна возвращать
Шаблон вашего решения:
package main
import (
"fmt"
"math"
)
func SqRoots() {
var a, b, c float64
fmt.Scanln(&a, &b, &c)
...
}
Самостоятельно определять функцию main() и вызывать функцию SqRoots() не требуется – это сделает проверяющая система.
То есть вы можете сначала написать в среде разработки работающую программу, затем скопировать код, удалить функцию main() и отправить решение на проверку
Формат ввода
Три вещественных числа через пробел
Формат вывода
Вещественные числа через пробел
Пример 1
Ввод Вывод
1 -3 2
1.000 2.000
Пример 2
Ввод Вывод
1 4 4.0
-2.000
Пример 3
Ввод Вывод
1 1 1
0 0
.
Java
Если дискриминант
больше 0, уравнение имеет два различных действительных корня, которые вычисляются и печатаются в порядке возрастания.
Если дискриминант равен 0, уравнение имеет один действительный корень, который вычисляется и печатается.
Если дискриминант меньше 0, уравнение не имеет действительных корней и печатаются два нуля.
Подправленный код под твои нужды:
Язык программирования golang
package main
import (
"fmt"
"math"
)
func SqRoots() {
var a, b, c float64
fmt.Scanln(&a, &b, &c)
discriminant := b*b - 4*a*c
if discriminant > 0 {
root1 := (-b + math.Sqrt(discriminant)) / (2 * a)
root2 := (-b - math.Sqrt(discriminant)) / (2 * a)
fmt.Printf("%.2f %.2f\n", math.Min(root1, root2), math.Max(root1, root2))
} else if discriminant == 0 {
root := -b / (2 * a)
fmt.Printf("%.2f\n", root)
} else {
fmt.Println("0 0")
}
}
Функция SqRoots принимает три введенных с клавиатуры числа и вычисляет корни квадратного уравнения, образованного этими числами. Для вычисления корней используется квадратичная формула:

Если дискриминант равен 0, уравнение имеет один действительный корень, который вычисляется и печатается.
Если дискриминант меньше 0, уравнение не имеет действительных корней и печатаются два нуля.
Подправленный код под твои нужды:
package main
import (
"fmt"
"math"
)
func main() {
var a, b, c float64
fmt.Scanln(&a, &b, &c)
discriminant := b*b - 4*a*c
if discriminant > 0 {
root1 := (-b + math.Sqrt(discriminant)) / (2 * a)
root2 := (-b - math.Sqrt(discriminant)) / (2 * a)
fmt.Printf("%.5f %.5f\n", math.Min(root1, root2), math.Max(root1, root2))
} else if discriminant == 0 {
root := -b / (2 * a)
fmt.Printf("%.5f\n", root)
} else {
fmt.Println("0 0")
}
}
Алексанр Дубинин
Ввод 4 4 -1 , выводит -1.21 0.21, а хочет чтобы выводилось -1.2071 0.20711, как сделать, чтобы числ посл запятой больше было?
Алексанр Дубинин
Спасибо, все сработало, я в ужасе с изучения всего этого)
package main
import (
"fmt"
"math"
)
func SqRoots() {
var a, b, c float64
fmt.Scanln(&a, &b, &c)
d := b*b - 4*a*c
if d < 0 {
fmt.Println("0 0")
} else if d == 0 {
root := -b / (2 * a)
fmt.Printf("%.3f\n", root)
} else {
root1 := (-b + math.Sqrt(d)) / (2 * a)
root2 := (-b - math.Sqrt(d)) / (2 * a)
if root1 < root2 {
fmt.Printf("%.3f %.3f\n", root1, root2)
} else {
fmt.Printf("%.3f %.3f\n", root2, root1)
}
}
}
Похожие вопросы
- Сколько языков программирования стоит выучить???
- Какой язык программирования выбрать первым при нулевом опыте?
- Проблема с изучением языка программирования
- Подскажите какую книгу языков программирования Java купить?
- С какого языка программирования все же начать обучение, если хочу делать мобильные приложения?
- Доброго времени суток, хочу задать вопрос по поводу изучения языков программирования.
- Какой язык программирования стоит выбрать в качестве первого?
- Этот вопрос давно меня мучает. Почему в более мощных языках программирования нужно самому объявлять тип данной переменой
- Какой язык программирования лучше в качестве первого изучаемого языка - Java или PHP?
- Тяжело ли будет создать компьютерную игру с хорошей графикой? Какой язык программирования для этого нужно учить ?