Условие задачи:
Каждая четвёрка чисел входного потока представляет собой квадратное уравнение в такой форме $ax^2+bx+c=d.$ Выпишите через запятую решения этих уравнений (если это возможно).
Тесты:
Входной поток чисел | Корни уравнений |
1 -6 8 0 1 12 20 0 | 2, 4; -10, -2; |
1 1 -6 -2 1 -2 10 0 | -2.56155, 1.56155; нет корней; |
2 -0.5 2.2 0 5 0 -25 0 | нет корней; -2.23607, 2.23607; |
Код на языке C++:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#include <iostream> #include <cmath> using namespace std; int main() { double a, b, c, d, D; double x1,x2,x3; while(cin>>a>>b>>c>>d){ D=b*b-4*a*(c-d); if(D>0) { x1=(-b-sqrt(D))/(2*a); x2=(-b+sqrt(D))/(2*a); cout<<x1<<", "<<x2<<"; "; } else { if(D==0) { x3=(-b)/(2*a); cout<<x3<<"; "; } else cout<<"нет корней"<<"; "; } } return 0; } |
Код на языке Java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
import java.util.*; import java.lang.*; import java.io.*; class Ideone { public static void main (String[] args) throws java.lang.Exception { double a,b,c,d,D; double x1,x2,x3; Scanner in = new Scanner(System.in); while (in.hasNextDouble()){ a = in.nextDouble(); b = in.nextDouble(); c = in.nextDouble(); d = in.nextDouble(); D=b*b-4*a*(c-d); if(D>0){ x1=(-b-Math.sqrt(D))/(2*a); x2=(-b+Math.sqrt(D))/(2*a); System.out.println(x1+" "+x2+";"); } else{ if(D==0){ x3=(-b)/(2*a); System.out.println(x3+";"); } else System.out.println("нет корней;"); } } } } |
Решение задачи:
Для решения этой задачи используется цикл, который выполняется до тех пор, пока в потоке подряд расположены четыре числа, четыре коэффициента, которые стоят перед неизвестными в квадратном уравнении классического вида: [latex]ax^{2}\pm bx\pm c=d[/latex]. Для самого нахождения корней использовалась известная формула [latex]x_{1,2}=\frac{-b-\sqrt{b^{2} \pm 4a(c-d)}}{2a}[/latex]. В коде, для удобства, она была разделена на две части: нахождение дискриминанта [latex]D[/latex] и нахождение самих корней, что возможно (на вещественной числовой оси) лишь при условии [latex]D>0[/latex].
Решение задачи на C++: Ideone
Решение задачи на Java: Ideone