0 / 0 / 0
Регистрация: 21.04.2015
Сообщений: 7
1

Операции сложения, вычитания и умножения полиномов

04.05.2015, 11:35. Показов 1094. Ответов 8
Метки нет (Все метки)

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


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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
 
struct polynom 
{
    double *koef;
    int deg;
};
 
 
 void input(polynom &p)
{
    cout << "Введите степень: ";
    cin >> p.deg;
    p.koef = new double[p.deg ];
    for (int i = 0; i <= p.deg ; i++)
    {
        cout << "K" << i << " = ";
        cin >> p.koef[i];
    }
}
 void output(polynom &p)
 {
     if (p.koef[p.deg] == 1)
         cout << "X^" << p.deg;
     else
     {
         if (p.koef[p.deg] == -1)
             cout << "-X^" << p.deg;
         else
             cout << p.koef[p.deg] << "X^" << p.deg;
     }
     for (int i = p.deg - 1; i > 0; i--)
     {
         if (p.koef[i] != 0)
         {
 
             if (p.koef[i] > 0)
             {
                 if (p.koef[i] == 1)
                     cout << " + " << "X^" << i;
                 else
                     cout << " + " << p.koef[i] << "X^" << i;
             }
             else
             {
                 if (p.koef[i] == -1)
                     cout << " - " << "X^" << i;
                 else
                     cout << " - " << (-1)*p.koef[i] << "X^" << i;
             }
         }
     }
             if (p.koef[0] > 0)
                 cout << " + " << p.koef[0] << "\n";
             else
                 cout << " - " << (-1)*p.koef[0] << "\n";    
     }
 
 
int main()
{
    setlocale(0, "");
    polynom p;
    input(p);
    output(p);
 
    system("pause");
 
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.05.2015, 11:35
Ответы с готовыми решениями:

Реализовать калькулятор с функциями умножения, деления, сложения и вычитания
Ребятки, спасайте!Учусь на 1 курсе на программиста.Дали курсовик с темой написать калькулятор...

Вычислить значение выражения, используя не более восьми операций умножения, сложения и вычитания
Даны целые числа x и y. Программа, используя только операции умножения, сложения и вычитания,...

Используя только операции сложения и вычитания, найти частное/остаток от деления нацело N на K (while)
Даны целые положительные числа N и K. Используя только операции сложения и вычитания, найти...

В зависимости от выбора пользователя вызвать функцию сложения, произведения, вычитания
Написать функцию, которая, в зависимости от выбора пользователя вызывает функцию сложения,...

8
Модератор
Эксперт функциональных языков программированияЭксперт Python
31771 / 17616 / 3700
Регистрация: 12.02.2012
Сообщений: 29,653
Записей в блоге: 5
05.05.2015, 00:04 2
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
#include <iostream.h>
#include <math.h>
 
int * PolyMult(int *P1, int n1, int *P2, int n2)
{
    int *R,i,j;
    R=new int[n1+n2+1];
    
    for (i=0; i<=(n1+n2); i++) R[i]=0;
 
    for (i = 0; i <= n1; i++)
        for (j = 0; j <= n2; j++)
            R[i + j] +=  (P1[i] * P2[j]);
    return R;
}
 
int * PolyAdd(int *P1, int n1, int *P2, int n2)
{
    int *R,i,j,n;
    
    if (n1 > n2) 
        n=n1;
    else
        n=n2;
 
    R=new int[n+1];
    
    for (i=0; i<=(n); i++) 
    {
        R[i]=0;
        if (i <= n1) R[i] += P1[i];
        if (i <= n2) R[i] += P2[i];
    }
 
    return R;
}
 
void PolyPrint(int *P, int n)
{
    int i,flg=0;
    for (i=0; i<=n; i++)
        if (P[i] != 0)
        {
            if (P[i] > 0) 
            {
                if (flg) cout << "+";
                if ((P[i] != 1) && (i >= 1)) cout << P[i];
                if (i==0) cout << P[i];
            }
            else
            {
                if (flg) cout << "-";
                if (abs(P[i]) != 1) cout << abs(P[i]);
            }
            if (i > 0) cout << "x"; 
            if (i > 1) cout << "^" << i;
            flg=1;
        }
        cout << endl;
}
 
int main(int argc, char* argv[])
{
    int P1[3]={1,2,1}; // 1+2x+x^2
    int P2[2]={1,1};   // 1+x
    int *P3,*Q,i;
 
    P3=PolyMult(P1,2,P2,1);
    Q=PolyAdd(P1,2,P2,1);
 
 
    PolyPrint(P3,3);
    PolyPrint(Q,2); 
 
    cout << endl;
 
    delete [] P3;
 
    return 0;
}
Вывод:

1+3x+3x^2+x^3
2+3x+x^2
0
0 / 0 / 0
Регистрация: 21.04.2015
Сообщений: 7
06.05.2015, 23:06  [ТС] 3
а можно пожалуйста с комментариями? а то не все строки понятны
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
31771 / 17616 / 3700
Регистрация: 12.02.2012
Сообщений: 29,653
Записей в блоге: 5
07.05.2015, 11:24 4
Что конкретно непонятно?
0
0 / 0 / 0
Регистрация: 21.04.2015
Сообщений: 7
07.05.2015, 11:29  [ТС] 5
R=new int[n1+n2+1];

for (i=0; i<=(n1+n2); i++) R[i]=0;

эти строки
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
31771 / 17616 / 3700
Регистрация: 12.02.2012
Сообщений: 29,653
Записей в блоге: 5
07.05.2015, 14:05 6
R - динамический массив, который будет хранить произведение полиномов. Длина его соответствует степени произведения (+1 на всякий случай). Массив создается и заполняется нулями.
0
0 / 0 / 0
Регистрация: 21.04.2015
Сообщений: 7
10.05.2015, 11:10  [ТС] 7
а можно соединить то, что я написала и ваш код в одну программу?
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
31771 / 17616 / 3700
Регистрация: 12.02.2012
Сообщений: 29,653
Записей в блоге: 5
10.05.2015, 11:16 8
Можно, но не вижу особого смысла. У тебя только ввод и печать. Интереснее другое: к моему коду приделать ввод полинома в естественном виде (не как у тебя, по коэффициентам), а как строки символов - "4+8x^2-12x^3"
0
0 / 0 / 0
Регистрация: 21.04.2015
Сообщений: 7
11.05.2015, 20:12  [ТС] 9
мне просто надо чтоб было с моим вводом-выводом, а я затрудняюсь их соединить. не подскажете?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2015, 20:12
Помогаю со студенческими работами здесь

Написать и протестировать функцию для сложения и вычитания вещественных матриц
Всем привет друзья! мне нужен код вот такой задачи Написать и протестировать функцию для...

Заданы цифры - расставить знаки сложения и вычитания так, чтобы получилось выражение с заданным результатом
Здравствуйте, задали домашнее задание. Имеются цифры 1, 2, 3, 4, 5, 6, 7, 8, 9. Необходимо...

Таблица умножения и сложения в шестнадцатеричной системе
Напечатать таблицу умножения и сложения в шестнадцатеричной системе счисления.

Распечатать таблицу умножения и сложения натуральных чисел
Составить программу которая печатает таблицу умножения и сложения натуральных чисел в десятичной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru