Top.Mail.Ru
Ответы

Язык программирования 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
.

По дате
По рейтингу
Аватар пользователя
Новичок
123456789101112131415161718192021222324
 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, уравнение не имеет действительных корней и печатаются два нуля.

Подправленный код под твои нужды:

123456789101112131415161718192021222324
 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") 
	} 
} 
Аватар пользователя
Оракул
123456789101112131415161718192021222324252627282930
 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) 
        } 
    } 
}