func SqRoots() {
var a, b, c float64
fmt.Scanln(&a, &b, &c)
d, q := b * b - 4.0 * a * c, -b / (2 * a)
if d < 0.0 {
fmt.Println("0 0")
} else if d > 0.0 {
p := math.Sqrt(d) / math.Abs(2 * a)
fmt.Println(q - p, q + p)
} else {
fmt.Println(q)
}
}
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 {
fmt.Printf("%.3f\n", -b/(2*a))
} else {
sqrtD := math.Sqrt(D)
x1 := (-b - sqrtD) / (2 * a)
x2 := (-b + sqrtD) / (2 * a)
if x1 > x2 {
x1, x2 = x2, x1
}
fmt.Printf("%.3f %.3f\n", x1, x2)
}
}
Ограничение времени 1 секунда
Ограничение памяти 64.0 Мб
Ввод стандартный ввод
Вывод стандартный вывод
Гоша работает над проектом, в котором приходится часто решать квадратные уравнения. Он мог бы и сам написать функцию для их вычисления, но сильно занят (спит без задних ног). Помогите Гоше: напишите калькулятор для вычисления корней квадратного уравнения с пользовательским вводом.
Для этого напишите функцию SqRoots(), в которой с клавиатуры через пробел вводятся три вещественных числа, при этом первое число гарантированно не равно нулю. Функция должна вывести на экран через пробел по возрастанию корни уравнения (один или два), или два числа 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