C/C++

Помогите с задачей по C++

#include <iostream>
using namespace std;
double coefficient(const char* name) {
cout << name << ": ";
double value;
cin >> value;
return value;
}
bool iszero(double value, double prec = 1e-15) {
return fabs(value) < prec;
}
int main() {
system("chcp 1251 > nul");
const char* message = "Уравнение не имеет действительных корней";
auto a = coefficient("a");
if (!iszero(a)) {
auto b = coefficient("b");
auto c = coefficient("c");
auto d = b * b - 4 * a * c;
if (iszero(d)) {
auto x = -b / (2 * a);
cout << "x1 = x2 = " << x << '\n';
} else if (d > 0) {
d = sqrt(d);
auto x1 = (-b + d) / (2 * a);
auto x2 = (-b - d) / (2 * a);
cout << "x1 = " << x1 << "\nx2 = " << x2 << '\n';
} else puts(message);
} else puts(message);
system("pause > nul");
}
Сергей Алалыкин
Сергей Алалыкин
77 239
Лучший ответ
#include "iostream"
#include "cmath"
using namespace std;
int main(){
double a,b,c,d,x1,x2,e,f;
cout<<"a b c: "; cin>>a>>b>>c;
if(!a)
if(b)cout<<"x="<< c/b<<'\n';
else cout<<"No solution\n";
else{
d=b*b-4*a*c;
if(d<0){
cout<<"No real solution\n";
e=-b/(2*a); f=sqrt(abs(d))/(2*a);
cout<<"x1="<< e<<" +"<< f<<"i\n";
cout<<"x2="<< e<<" -"<< f<<"i\n";}
else{
d=sqrt(d);
x1=(-b+d)/(2*a); x2=(-b-d)/(2*a);
if(abs(x1)>abs(x2))x2=c/a/x1; else x1=c/a/x2;
cout<<"x1="<< x1<<'\n';
cout<<"x2="<< x2<<'\n';}}
}