Следующий код должен считывать 3 коэффициента уравнения 2-й степени и выводить дискриминант и решения (если они есть), аналогичные этому онлайн-калькулятору: https://calculator.tutorvista.com/math/496/2nd-degree-equation-calculator.html
Но по некоторым причинам мой калькулятор, похоже, дает некоторые результаты правильно, но не в большинстве случаев.
#include <iostream>
#include <math.h>
using namespace std;
int main() {
float a, b, c;
cout << "a=" << endl;
cin >> a;
cout << "b=" << endl;
cin >> b;
cout << "c=" << endl;
cin >> c;
float delta = (pow(b, 2)) - (4 * a*c);
float summit = (-b) / (2 * a);
float x1 = (-(b) + (sqrt(delta)) / (2 * a));
float x2 = (-(b) - (sqrt(delta)) / (2 *a));
cout <<"Discriminant="<< delta << endl;
if (delta < 0) {
cout << "No solution" << endl;
}
else if (delta == 0) {
cout << "Unique solution is:" << summit << endl;
}
else {
cout << "First solution is:" << x1 << endl;
cout << "Second solution is:" << x2 << endl;
}
std::cin.ignore();
std::cin.get();
}
Вот несколько редких примеров ввода, в которых мой калькулятор работает по назначению в соответствии с онлайн-калькулятором, указанным выше:
а = 3; б = 1; с = 24;
а = 1, б = 0; с = 0;
а = 1, б = -4; с = 4;
Но не всегда все идет так гладко, например, ввод 1; 4; -12 дает вам 8 и 0, а не 6 и -2 (обратите внимание, что результаты отклоняются на 2), в других случаях один из решения будут правильными, а другие - нет, и в большинстве случаев результаты полностью выключены.
Я не совсем уверен, связана ли проблема с дискриминантом или решением, потому что иногда первое будет правильным, а второе - нет.
Существует ли определенный этикет, когда речь идет о написании математических формул на C ++, о котором я не знаю?
Заранее спасибо.