Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Деление многочленов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа с ip-адресом http://www.cyberforum.ru/cpp-beginners/thread556063.html
Каким образом можно работать с последним октантом ip-адреса. То есть считывать его, переписывать его значение?
C++ Сумма полож. элементов в каждой строке матрицы Доброго времени суток, уважаемые! Получил задачу, с которой мой гуманитарный мозг не сумел справиться... "Если сумма полож. элементов в каждой строке матрицы < f, то определить количество нулевых... http://www.cyberforum.ru/cpp-beginners/thread556060.html
Модификация программы C++
Модифицируйте программу из данного раздела так, чтобы она подсчитывала не только буквы, но и встретившиеся пробелы, символы табуляции и новой строки. За ранее благодарен. #include <iostream>...
C++ редактировать и удалять
как отредактировать и удалять записи из куче БД ?? #include "stdafx.h" #include <conio.h> #include <iostream> #include <windows.h> #include <iomanip> using namespace std;
C++ Можно ли узнать размер одного элемента в STL контейнере? http://www.cyberforum.ru/cpp-beginners/thread556035.html
Допустим, мне захотелось узнать, сколько памяти ест мой map. Для этого надо знать размер 1 элемента. Я погуглил, покопался в cpp-reference, но ничего полезного не нашел. Сойдут и нестандартные...
C++ Реализация численного метода решения СЛАУ Помогите разработать ПО для реализации численного метода простой итерации решения СЛАУ. подробнее

Показать сообщение отдельно
STArSka
146 / 27 / 11
Регистрация: 21.09.2015
Сообщений: 58
22.09.2015, 13:45
Я попробовал исправить алгоритм деления , переписал используя ваш код и идею алгоритма , добавил расчет множителя как отношение коэффициентов для достоверности результата и обработки случаев дробных коэффициентов на выходе;

Использую такой же класс TMnogochlen;

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
TMnogochlen TMnogochlen::operator /(TMnogochlen &ob)
{
    
    bool inAlgoritm = true;
 
    TMnogochlen temp; 
    TMnogochlen ob_1; 
    TMnogochlen ob_2; 
    TMnogochlen ob_4;
 
    temp.degree = degree - ob.degree;
    temp.koef = new double[temp.degree + 1];
    memset(temp.koef, 0, (temp.degree + 1)*sizeof(double));
 
    ob_1.degree = degree;
    ob_1.koef = new double[degree + 1];
    for (int i = degree; i >= 0; i--)
        ob_1.koef[i] = koef[i];
 
    ob_2.degree = ob.degree;
    ob_2.koef = new double[ob.degree + 1];
    for (int i = ob.degree; i >= 0; i--)
        ob_2.koef[i] = ob.koef[i];
 
    ob_4.degree = ob_1.degree;
    ob_4.koef = new double[ob_1.degree + 1];
 
    double mnojnik;
    int k = 0;
    int i, j;
    while (inAlgoritm)
    {
        
        for (int i = ob.degree; i >= 0; i--)
            ob_4.koef[i] = ob.koef[i];
 
        if (ob_2.degree < ob_1.degree)
        {
            for (i = ob_1.degree,j = ob_2.degree; i >= 0; i--, j--)
            if (j < 0)
                ob_4.koef[i] = 0;
            else
                ob_4.koef[i] = ob_2.koef[j];
        }
        
 
        
        mnojnik = ob_1.koef[ob_1.degree] / ob_4.koef[ob_1.degree];
 
        temp.koef[temp.degree - k] = mnojnik;
        k++;
 
        
 
        for (int i = 0; i <= ob_1.degree; i++)
            ob_4.koef[i] *= mnojnik;
 
        for (int i = 0; i <= ob_1.degree; i++)
            ob_1.koef[i] -= ob_4.koef[i];
        
        ob_1.degree--;
        if (ob_2.degree > ob_1.degree) inAlgoritm = false;
        
    }
 
    return temp;
 
}

Не по теме:

Я понимаю , что тема старая , но она будет полезна студентам , которые получили подобное задание , таким как я ).
вскоре попытаюсь добавить деление с остатком.



Добавлено через 14 часов 19 минут
Я решил добавить деление с остатком , вот , собственно , код :

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
TMnogochlen TMnogochlen::operator %(TMnogochlen &ob)
{
 
    bool inAlgoritm = true;
 
    TMnogochlen ob_1;
    TMnogochlen ob_2;
    TMnogochlen ob_4;
 
    ob_1.degree = degree;
    ob_1.koef = new double[degree + 1];
    for (int i = degree; i >= 0; i--)
        ob_1.koef[i] = koef[i];
 
    ob_2.degree = ob.degree;
    ob_2.koef = new double[ob.degree + 1];
    for (int i = ob.degree; i >= 0; i--)
        ob_2.koef[i] = ob.koef[i];
 
    ob_4.degree = ob_1.degree;
    ob_4.koef = new double[ob_1.degree + 1];
 
    double mnojnik;
    int i, j;
    while (inAlgoritm)
    {
 
        for (int i = ob.degree; i >= 0; i--)
            ob_4.koef[i] = ob.koef[i];
 
        if (ob_2.degree < ob_1.degree)
        {
            for (i = ob_1.degree, j = ob_2.degree; i >= 0; i--, j--)
            if (j < 0)
                ob_4.koef[i] = 0;
            else
                ob_4.koef[i] = ob_2.koef[j];
        }
 
 
 
        mnojnik = ob_1.koef[ob_1.degree] / ob_4.koef[ob_1.degree];
 
 
        for (int i = 0; i <= ob_1.degree; i++)
            ob_4.koef[i] *= mnojnik;
 
        for (int i = 0; i <= ob_1.degree; i++)
            ob_1.koef[i] -= ob_4.koef[i];
        
               ob_1.degree--;
        if (ob_2.degree > ob_1.degree) inAlgoritm = false;
 
    }
 
    return ob_1;
 
}
Код не сильно отличается от простого деления по той причине , что при делении остаток остается в ob_1 .
Если кто знает как упростить , то буду очень признателен .

Не по теме:

Если что - не ругайте сильно , я всего лишь новичок )

0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru