Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Программирование на GO.

Александр Меньшиков Знаток (346), закрыт 1 месяц назад
Квадратные корни
Ограничение времени 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
Лучший ответ
Андрей Высший разум (464982) 2 месяца назад
 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)
}
}
Александр МеньшиковЗнаток (346) 2 месяца назад
к сожалению тоже неверно
Андрей Высший разум (464982) Александр Меньшиков, Что именно неверно?
Остальные ответы
Mansyr Hilmi Мастер (2489) 2 месяца назад
Чтобы решить задачу по вычислению корней квадратного уравнения, мы напишем функцию `SqRoots()` в языке Go. Данная функция будет принимать три коэффициента квадратного уравнения и вычислять его корни. Если корней нет, она выведет два нуля.

Ниже представлен код для реализации данной функции:

```go
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 {
root1, root2 = root2, root1
}

fmt.Printf("%.3f %.3f\n", root1, root2)
}
}
```

### Объяснение кода:

1. **Ввод данных**: Мы считываем три коэффициента \( a \), \( b \) и \( c \) с помощью `fmt.Scanln`.
2. **Дискриминант**: Вычисляем дискриминант \( D = b^2 - 4ac \).
3. **Проверка дискриминанта**:
- Если \( D < 0 \): нет корней, выводим "0 0".
- Если \( D = 0 \): один корень, вычисляем его и выводим.
- Если \( D > 0 \): два корня, вычисляем их, сортируем по возрастанию и выводим.
4. **Форматирование вывода**: Корни выводятся с точностью до трех знаков после запятой.

Теперь, если вы выполните этот код в среде Go, он будет правильно вычислять корни квадратного уравнения в соответствии с заданными условиями.
Александр МеньшиковЗнаток (346) 2 месяца назад
неверно(
Рустам Абдрашитов Мудрец (10260) 2 месяца назад
Используйте этот код:
 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)
}
}
Александр МеньшиковЗнаток (346) 2 месяца назад
тоже нет,что ж такое я даже все нейронки использовала
Похожие вопросы