Помогите найти ошибку,дискриминант правильный,но с корнями проблема..что же не так?Вот например уравнение 5x^2 - 6x + 1 = 0.Попробуйте решить на бумаге и на это программе: 代码: #include <iostream> #include <locale.h> #include <windows.h> #include <math.h> using namespace std; int main() { setlocale( LC_ALL, "Russian" ); cout << "Решение квадратного уравнения и вычисление дискриминанта дискриминанта по формуле x^2+bx+c=0,если нет какого-либо из члена,напишите 0" << endl; cout << "Введите a" << endl; double a,b,c,d,bk,kp,km,kd,bm; cin >> a; cout << "Введите b" << endl; cin >> b; cout << "Введите c" << endl; cin >> c; bk = pow(b,2); d = bk - 4 * a * c; cout << "Дискриминант = " << d; if (d < 0) { cout << " < 0" << endl; cout << "Ответ:Корней нет" << endl; } else { cout << endl; kd = sqrt(d); bm = b / (-2); kp = (bm + kd) / (2 * a); km = (bm - kd) / (2 * a); cout << "Ответ: x1 = " << kp << endl; cout << "Ответ: x2 = " << km << endl; } system("PAUSE"); }
代码: kd = sqrt(d); bm = b / (-2); kp = (bm + kd) / (2 * a); km = (bm - kd) / (2 * a); Ошибка вот в этом куске, зачем ты делишь b на -2? Нужно просто менять знак bm = -b;
Изменил,теперь вот так: 代码: else { cout << endl; kd = sqrt(d); kp = (-b + kd) / (2.0 * a); km = (-b - kd) / (2.0 * a); cout << "Ответ: x1 = " << kp << endl; cout << "Ответ: x2 = " << km << endl; } Всё равно корни не правильные.И заменил int числа (2 и 4) double'овыми 2.0 и 4.0
Вот этот код выдает у меня 100% правильные ответы Компилю под виндой с помощью Cygwin 代码: #include <cstdlib> #include <iostream> #include <locale.h> #include <windows.h> #include <math.h> using namespace std; int main(int argc, char** argv) { setlocale(LC_ALL, "Russian"); cout << "Решение квадратного уравнения и вычисление дискриминанта дискриминанта по формуле x^2+bx+c=0,если нет какого-либо из члена,напишите 0" << endl; cout << "Введите a" << endl; double a, b, c, d, bk, kp, km, kd, bm; cin >> a; cout << "Введите b" << endl; cin >> b; cout << "Введите c" << endl; cin >> c; bk = pow(b, 2); d = bk - 4.0 * a * c; cout << "Дискриминант = " << d; if(d < 0) { cout << " < 0" << endl; cout << "Ответ:Корней нет" << endl; } else { cout << endl; kd = sqrt(d); kp = (-b + kd) / (2.0 * a); km = (-b - kd) / (2.0 * a); cout << "Ответ: x1 = " << kp << endl; cout << "Ответ: x2 = " << km << endl; } system("PAUSE"); return 0; }