С++ | Помогите с кодом на С++

266
05 мая 2017, 19:25

Приветствую, господа. Помогите пожалуйста с "почти" готовыми кодами, которые нужно довести до ума. Итак, код 1:

Задание 1. Создать класс «Квадратное уравнение». Данные класса - значения коэффициентов a, b, c, а также решения уравнения х1 и х2. Создать конструктор ведения данных класса, конструктор по умолчанию и копирования. Определите метод для вычисления корней уравнения, причем результаты развязку передаются как параметры функции х1 и х2 через указатель или ссылку. Предусмотрите все возможные варианты развязку.

Задание 2. Создайте класс-потомок «Теорема Виета», в котором переопределите метод нахождения корней квадратного уравнения по соответствующей теоремой. Выведите результаты на экран.

Определите статические и динамические объекты созданного типа и вызовите соответствующие методы для вычисления корней таких уравнений:

  • –7a2 + 6a + 1=0
  • a2 - 6a + 8=0
  • a2 -4=0
  • -4a2 + 6a + 1=0
  • 10 - 3a - a2 =0*

Тут я сделал вот такой код:

#include <iostream.h>
#include <complex.h>
#include <vcl.h>
#include <math.h>
using namespace std;
typedef  double Qd;
typedef  float  Qf;
class QQ
{
public:
QQ
    (Qd  A = 1, Qd  B = 0, Qd  C = 0):a(A), b(B), c(C)
{
}
void  vvid()
{
    cout << "Коефициенты: "
              << endl;
    do
    {
        cout << "a = ";
        cin >> a;
    }while(a == 0);
    cout << "b = ";
    cin >> b;
    cout << "c = ";
    cin >> c;
}
void  show()
{
    cout << "Уравнение вида: ";
    print();
    cout << ":"
              << endl
              << "D= "
              << D()
              << endl
              << "Корни:"
              << endl
              << "\tX1 = "
              << X1()
              << endl
              << "\tX2 = "
              << X2()
              << endl
              << endl
              << endl
              << endl
              << endl
              << endl;
}

Qf  D()
{
    return b * b - 4 * a * c;
}

Qf  X1()
{
    return (-b - sqrt(D())) / (2.0 * a);
}

Qf  X2()
{
    return (-b + sqrt(D())) / (2.0 * a);
}

void print()
{
    if(abs(a) == 1)
    {
        cout << (a > 0 ? "" : "-");
    }
    else
    {
        cout << a;
    }
    cout << "x^2";
    if(b)
    {
        cout << (b > 0 ? " + " : " - ");
        if(abs(b) != 1)            
        {
            cout << abs(b);
        }
        cout << "x";
    }
    if(c)
    {
        cout << (c > 0 ? " + " : " - ")
                  << abs(c);
    }                  
    cout << " = 0";
}
private:
Qd  a;
Qd  b;
Qd  c;
};

int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
QQ  one(-7, 6, 1);
QQ  two(1, -6, 8);
QQ  three(1, 0, -4);
QQ  four(-4, 6, 1);
QQ  five(-1, -3, 10);
one.show();
two.show();
three.show();
four.show();
five.show();
cin.get();
}

Но мне нужно еще сделать, так чтоб уравнения виду ax^2+bx+c=0 где a!=0, b!=0, c!=0 решалось по теореме Виетта. Я сделал вот такой код:

#include <math.h>
int n=0;
float x1, x2=abs(c/a);
for (;x2>=-abs(c/a);x2-=0.01) 
{
x1=(c/a)/x2;
if (x1+x2==-b/a)
{
n=1;
break;
}
}
if (n==1)
cout<<"x1= "<<x1<<"\nx2= "<<x2;
else cout<<"нет корней";

Помогите, можете склеить код с проверкой уравнения и сказать, что еще я не выполнил в задании.

READ ALSO
proxy vs decorator

proxy vs decorator

Доброго времени сутокВ своем вопросе рассматриваю паттерны прокси и декоратор исключительно в контексте языка c++

335
Выделение памяти под методы класса, если объектов более одного

Выделение памяти под методы класса, если объектов более одного

Есть некий класс, сlass A_class; у него есть свойство int b; и метод void action(); который содержит некий код

255
Умножение элементов массива

Умножение элементов массива

Здравствуйте, как умножить каждый элемент массива по очереди на каждый элемент другого массиваНапример есть массив А[5] B[5] и нужно умножить...

365
Как вывести ProcessorType из WMI Provider (Win32_Processor)

Как вывести ProcessorType из WMI Provider (Win32_Processor)

Из описания на msdn в Win32_Processor есть поле ProcessorTypeЯ пробую вывести это строками:

206