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

Деление многочленов, нахождение НОД - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Класс прямоугольник (Visual C++) http://www.cyberforum.ru/cpp-beginners/thread518624.html
Необходимо создать класс прямоугольник и производный класс пятиугольник.Необходимо перемещать фигуры на плоскости(параллельный перенос) и проверить факт пересечения этих фигур.
C++ Подсчёт числа слов в предложении - исправить ошибки помогите исправит ошибку.прог не правильно работает. он предназначен для считывание число слов в предложении #include <iostream> #include <conio.h> using namespace std; int main() { int word = 1; int d= 0; int pr = 0; http://www.cyberforum.ru/cpp-beginners/thread518616.html
Сформировать файл, в котором хранятся результаты сессии группы. C++
Всем привет, помогите решить одну задачку, скоро сессия, а я все никак не сделаю. "Сформировать файл, в котором хранятся результаты сессии группы. Написать программу корректировки оценок, у студентов, пересдавших сессию." Заранее спасибо!
C++ Объекты синхронизации. мьютексы, семафоры
помогите пожалуйста. . Реализовать на семафоре мьютекс. Количественные характеристики мьютекса должны быть аналогичны соответствующему объекту ядра типа мьютекс. С++
C++ Здравствуйте! Создал класс std::string. Не создается объкт типа string... Подскажите в чем причина? http://www.cyberforum.ru/cpp-beginners/thread518602.html
#include <stdlib.h> #include <iostream> #include <string.h> //using namespace std; class string { private: int _size;
C++ Сумма ряда Скажите правильно ли я составил программу? Ввести с клавиатуры х и точность вычисления Eps. Вычислить с заданной точностью сумму S=pow(-1.0 , (k+1)) * (pow(x,k) / (k+3)!); #include "stdafx.h" #include <iostream> #include <clocale> #include <math.h> using namespace std; подробнее

Показать сообщение отдельно
White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402

Деление многочленов, нахождение НОД - C++

14.03.2012, 14:59. Просмотров 1380. Ответов 0
Метки (Все метки)

При реализации НОД у меня многочлен делится на производную идет вот такой порядок:
f(x) = g(x)∙q1(x) + r1(x), (1)
затем, если r1(x) ≠ 0, – второго данного многочлена, g(x), на первый остаток – на многочлен r1(x):
g(x) = r1(x)∙q2(x) + r2(x), (2)
далее, если r2(x) ≠ 0, – первого остатка, r1(x), на второй остаток, r2(x):
r1(x) = r2(x)∙q3(x) + r3(x), (3)
затем, если r3(x) ≠ 0, – второго остатка на третий:
r2(x) = r3(x)∙q4(x) + r4(x), (4)

а у меня сразу после первого деления и нахождения остатка и частного программа как бы заканчивается, хотя условие не выполнено, подскажите где я ошибаюсь, пж

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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#include "stdafx.h"
#include <conio.h>
#include <math.h>
#include <iostream>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"Russian");
    double e1[10], e2[10], cop1[10], cop2[10], otv[10], ch[10], cop22[10];
    int d1, d2, t, y;
    cout<<"Введите многочлен"<<endl;
    A:  cout<<"Введите значениe старшей степени многочлена:"; cin>>d1;
            if(!cin.good())
            {
                cout<<"Ошибка! Введите значениe старшей степени многочлена, заново!"<<endl;
                _flushall();
                cin.clear();
                _getch();
                goto A;
            }
 
            for(int i=0; i<d1+1; i++)
            {
    A1:      cout<<"Введите коэффициент x^"<<i<<"=";
             cin>>e1[i];
             if(!cin.good()&&(e1[d1]!=3)||(e1[i]==0))
                {
                    cout<<"Ошибка"<<endl;
                    _flushall();
                    cin.clear();
                    goto A1;
                }
            }
            cout<<e1[d1]<<"(x^"<<d1<<")";
            for(int i=d1-1; i>=0; i--)
            {   
                if(e1[i]>0) cout<<"+"<<e1[i]<<"(x^"<<i<<")";
                else cout<<e1[i]<<"(x^"<<i<<")";
            }
        for(int i=d1; i>=0; i--)
        {
            e2[i]=e1[i];
            cop1[i]=e1[i];//копия 1
        }
    cout<<" "<<endl;
 
    cout<<"Производная многочлена:";
    for(int i=d1; i>=1; i--)
    {
        e2[i-1]=e1[i]*i;
    }
    d2=d1-1;
    cout<<e2[d2]<<"(x^"<<d1-1<<")";
    for(int i=d2-1; i>=0; i--)
            {   
                if(e2[i]>0) cout<<"+"<<e2[i]<<"(x^"<<i<<")";
                else cout<<e2[i]<<"(x^"<<i-1<<")";
            }
    cout<<" "<<endl;
    int dd2 = d2;
    do
    {
            int e = d1 - d2;
    
            for(int i=0; i<d1+1; i++)
                {
                    if(i==0) cop2[i]=0;
                    else cop2[i]=e2[i-1];
                }
            do
            {
        
                double u = cop1[d1]/cop2[d1];   
            
                ch[d1-d2] = u;  
                
                for(int i=0; i<d1+1; i++)
                {
                    cop22[i] = cop2[i] * u;
                }
                cout<<"делитель умноженный, так чтоб старшая степень обращалась в 0"<<endl;
                cout<<cop22[d1]<<"(x^"<<d1<<")";
        for(int i=d1-1; i>=1; i--)
        {
            if(cop22[i]>0) cout<<"+"<<cop22[i]<<"(x^"<<i<<")";
            else cout<<cop22[i]<<"(x^"<<i-1<<")";
        }
 
                for(int i=0; i<d1+1; i++)
                {
                    otv[i]=cop1[i]-cop22[i];
                }
            
                cout<<"Промежуточн отв"<<endl;
        cout<<otv[d1]<<"(x^"<<d1<<")";
        for(int i=d1-1; i>=0; i--)
        {
            if(otv[i]>0) cout<<"+"<<otv[i]<<"(x^"<<i<<")";
            else cout<<otv[i]<<"(x^"<<i<<")";
        }
        cout<<""<<endl;
 
 
                d1 = d1 - 1;
                for(int i=0; i<d1+1; i++)
                {
                    cop1[i] = otv[i];
                    cop2[i] = e2[i];
                }
            }
            while(d1>=d2);
 
            cout<<"Частное: ";
            cout<<ch[e]<<"(x^"<<e<<")";
            for(int i=e-1; i>=0; i--)
            {
            if(ch[i]>0) cout<<"+"<<ch[i]<<"(x^"<<i<<")";
                    else cout<<ch[i]<<"(x^"<<i<<")";
            }
            cout<<" "<<endl;
            cout<<"Остаток:";
            cout<<otv[d1]<<"(x^"<<d1<<")";
                for(int i=d1-1; i>=0; i--)
                {
                    if(otv[i]>0) cout<<"+"<<otv[i]<<"(x^"<<i<<")";
                    else cout<<otv[i]<<"(x^"<<i<<")";
                }
        cout<<" "<<endl;
        d2=d1;
        for(int i=d2; i>=0; i--)
        {
            cop1[i]=e2[i];
            cop2[i]=otv[i];
            otv[i]=0;
            ch[i]=0;
        }
        d1=dd2;
        
        cout<<"ПРОХОД "<<endl;
    }while(otv[0]!=0);
 
    system("pause");
    return 0;
}
Деление многочленов, нахождение НОД
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru