Java

Язык программирования golang

Внутри функции с клавиатуры через пробел вводятся три вещественных числа, при этом первое число гарантированно не равно нулю. Функция должна вывести на экран через пробел по возрастанию корни уравнения (один или два), или два числа 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
.
 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, уравнение имеет один действительный корень, который вычисляется и печатается.
Если дискриминант меньше 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")
}
}
Андрей Бобырь
Андрей Бобырь
14 273
Лучший ответ
Алексанр Дубинин Ввод 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)
}
}
}
Halel Bulumbaev
Halel Bulumbaev
25 860