С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/47: Рейтинг темы: голосов - 47, средняя оценка - 4.87
3 / 3 / 1
Регистрация: 20.11.2012
Сообщений: 197
1

Класс Полином со степенью многочлена и массивом коэффициентов

06.06.2016, 19:28. Показов 9226. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
1.Необходимо создать класс Полином (от одной переменной) в котором задается степень многочлена и массив коэффициентов, вводимых из консоли.
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication1
{
    class Mnogochlen 
    {
        private int step; //степень полинома
        private int[] koef;  //массив коэффициентов
 
        public Mnogochlen(int[] k, int s)
        {
           koef = k;
           step = s;
        }
 
 
        public void show()  //вывод на экран (например должно быть 1x+3x^2+6x^3)
        {
            StringBuilder sb = new StringBuilder();
            for(int i=0; i<=step; i++)
            sb.Append( koef[i] + "x^" + (step-i));
            Console.WriteLine(sb);
        }
    }
 
 
    class Program
    {
        static void Main(string[] args)
        {
            int step;
            int[] koef;
 
            Console.WriteLine("введите степень многочлена");
            step = Convert.ToInt32(Console.ReadLine());
 
            Console.WriteLine("Введите размер массива");
            int[] koef = new int[Int32.Parse(Console.ReadLine())];
 
            Console.WriteLine("Введите числа в массиве");
            for (int i = 0; i < koef.Length; i++)
            {
                Console.WriteLine("arr" + i.ToString() + " =");
                koef[i] = Int32.Parse(Console.ReadLine());
            }
 
            Mnogochlen m = new Mnogochlen(koef, step);
            m.show();
            Console.ReadKey();   
 
        }     
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.06.2016, 19:28
Ответы с готовыми решениями:

Составить описание класса многочленов от одной переменной, задаваемых степенью многочлена и массивом коэффициентов
Доброго времени суток. Нужна помощь в решении следующей задачи: &quot;Составить описание класса...

Составить описание класса многочленов от одной переменной, задаваемых степенью многочлена и массивом коэффициентов
На дом была дана задача. Условие задачи: &quot;Составить описание класса многочленов от одной...

Составить описание класса многочленов от одной переменной ,задаваемых степенью многочлена и массивом коэффициентов
Столкнулся с такой проблемой!Никак не могу поянть с чего надо начинать, я так понял что это...

Составить описание класса многочленов от одной переменной, задаваемых степенью многочлена и массивом коэффициентов
Здравствуйте,есть задание : Составить описание класса многочленов от одной переменной, задаваемых...

5
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,628
06.06.2016, 20:43 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
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
    class Program
    {
        class Polynomial
          {
            private readonly double[] _coefficients;
    
            //  Создание полинома на основе коэффициентов.
 
            //<param name = "coefficients">Коэффициенты*полинома.</param>
            public Polynomial(params double[] coefficients)
            {
                _coefficients = coefficients;
            }
 
            //  Получение или установка значения коэффициента полинома.
 
            //<param name = "n">Номер коэффициента.</param>
            //<returns>Значение коэффициента.</returns>
            public double this[int n]
            {
                get { return _coefficients[n]; }
                set { _coefficients[n] = value; }
            }
 
            //  Степень*полинома.
 
            public int Order
            {
                get { return _coefficients.Length; }
            }
 
            public override string ToString()
            {
                return string.Format("Coefficients:*" + string.Join(";*", _coefficients));
            }
 
            //  Быстрый расчет значения полинома по схеме Горнера.
 
            //<param name = "x">Аргумент полинома.</param>
            //<returns>Значение полинома.</returns>
            public double Calculate(double x)
            {
                int n = _coefficients.Length - 1;
                double result = _coefficients[n];
                for (int i = n - 1; i >= 0; i--)
                {
                    result = x * result + _coefficients[i];
                }
                return result;
            }
 
            //  Вычитание полиномов.
 
            public static Polynomial operator -(Polynomial pFirst, Polynomial pSecond)
            {
                int itemsCount = Math.Max(pFirst._coefficients.Length, pSecond._coefficients.Length);
                var result = new double[itemsCount];
                for (int i = 0; i < itemsCount; i++)
                {
                    double a = 0;
                    double b = 0;
                    if (i < pFirst._coefficients.Length)
                    {
                        a = pFirst[i];
                    }
                    if (i < pSecond._coefficients.Length)
                    {
                        b = pSecond[i];
                    }
                    result[i] = a - b;
                }
                return new Polynomial(result);
            }
              //  Сложение*полиномов.
            public static Polynomial operator +(Polynomial pFirst, Polynomial pSecond)
            {
                int itemsCount = Math.Max(pFirst._coefficients.Length, pSecond._coefficients.Length);
                var result = new double[itemsCount];
                for (int i = 0; i < itemsCount; i++)
                {
                    double a = 0;
                    double b = 0;
                    if (i < pFirst._coefficients.Length)
                    {
                        a = pFirst[i];
                    }
                    if (i < pSecond._coefficients.Length)
                    {
                        b = pSecond[i];
                    }
                    result[i] = a + b;
                }
                return new Polynomial(result);
            }
 
              //  Умножение*полиномов
            public static Polynomial operator *(Polynomial pFirst, Polynomial pSecond)
            {
                int itemsCount = pFirst._coefficients.Length + pSecond._coefficients.Length - 1;
                var result = new double[itemsCount];
                for (int i = 0; i < pFirst._coefficients.Length; i++)
                {
                    for (int j = 0; j < pSecond._coefficients.Length; j++)
                    {
                        result[i + j] += pFirst[i] * pSecond[j];
                    }
                }
 
                return new Polynomial(result);
            }
 
        }
       
        static void Main(string[] args)
        {
            Polynomial p1 = new Polynomial(2, 1);
            Polynomial p2 = new Polynomial(4, 3, 2, 1);
            Console.WriteLine(p1 + p2);
            Console.WriteLine(p1 - p2);
            Console.WriteLine(p1 * p2);
            Console.WriteLine((p1 * p2).Calculate(1.2d));
            Console.ReadLine();
        }
    }
1
1 / 1 / 3
Регистрация: 03.06.2016
Сообщений: 7
06.06.2016, 21:23 3
Удалил.
0
3 / 3 / 1
Регистрация: 20.11.2012
Сообщений: 197
07.06.2016, 09:32  [ТС] 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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication3
{
 
    class Mnogochlen
    {
         
        int[] koef;
        int step;
  
        public Mnogochlen(int[] k, int s)
          {
             koef = k;
             step = s;
          }
          
          
        public static Mnogochlen operator +(Mnogochlen A, Mnogochlen B)
          {
               int D1 = A.step;
                int[] M1 = new int[D1 + 1];
               Mnogochlen C = new Mnogochlen(M1, D1);
              for (int i = 0; i < A.step + 1; i++)
                {
                    C.koef[i] = A.koef[i] + B.koef[i];
                }
 
              return C;
           }
           
        public static Mnogochlen operator -(Mnogochlen A, Mnogochlen B)
            {
               int D1 = A.step;
               int[] M1 = new int[D1 + 1];
                Mnogochlen C = new Mnogochlen(M1, D1);
                for (int i = 0; i < A.step + 1; i++)
               {
                    C.koef[i] = A.koef[i] - B.koef[i];
               }
 
               return C;
            }
            
        
        public static Mnogochlen operator *(Mnogochlen A, Mnogochlen B)
            {
               int D1 = A.step;
                int[] M1 = new int[D1 + 1];
                Mnogochlen C = new Mnogochlen(M1, D1);
                for (int i = 0; i < A.step + 1; i++)
                {
                    C.koef[i] = A.koef[i] * B.koef[i];
                }
 
                return C;
           }
                
            
        
         public int vivod(Mnogochlen A)
            {
                for (int i = 0; i < step; i++)
                { 
                    Console.Write("+" + A.koef[i] + "x^" + (step - i)); 
                } 
                return 0;
            }
       
 
 
            //вычисление значения многочлена для заданного аргумента x
            public int calculate(int[] k, int value, int x, int step)
            {
                for (int i = step; i > 0; i--)
                {
                    for (int j = i; j < step; j++) x *= x;
                    value += k[i - 1] * x;//умножаем его на коэффицент многочлена и прибавляем к основной сумме
                }
                value += k[step];
               Console.WriteLine("значения многочлена для x = " + value + "\n");
                return value;//прибавляем к основной сумме последний элемент и возвращаем значение
            }
 
            public int this[int i]
            {
                get
                {
                    return koef[i];
                }
 
                set
                {
                    koef[i] = value;
                }
            }
}
 
 
 
    class Program
    {
        static void Main(string[] args)
        {
            int step;
            int[] koef;
            int Val = 0;
 
            Console.WriteLine("Введите степень первого многочлена:");  
            step = Convert.ToInt32(Console.ReadLine());
            int n = step + 1;//Длина первого многочлена  
 
            Console.WriteLine("Введите размер массива");
            koef = new int[Int32.Parse(Console.ReadLine())];
 
 
            Console.WriteLine("Введите матрицу коэффициентов первого многочлена:");
            for (int i = 0; i < koef.Length; i++)
            {
                koef[i] = Int32.Parse(Console.ReadLine());
            }
            
            Mnogochlen A = new Mnogochlen(koef, step);
            int[] Matrix1 = { 1, 2, 3 };
 
            
            Console.WriteLine("Введите степень второго многочлена:");
            int step2 = Convert.ToInt32(Console.ReadLine());
            int n2 = step2 + 1;//Длина второго многочлена  
 
            Console.WriteLine("Введите размер массива");
            int[] koef2 = new int[Int32.Parse(Console.ReadLine())];
 
            Console.WriteLine("Введите матрицу коэффициентов второго многочлена:");
            for (int i = 0; i < koef2.Length; i++)
            {
                koef2[i] = Int32.Parse(Console.ReadLine());
            }
            Mnogochlen B = new Mnogochlen(koef2, step2);
            int[] Matrix2 = { 4, 5, 6 };
 
            
           Console.WriteLine("Введите значение x:");
            int x = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("\n");
 
            
            Console.Write("матрица A =");
            Console.WriteLine(A.show(A));
            A.calculate(Matrix1, Val, x, step);
            
            Console.Write("матрица B =");
            Console.WriteLine(B.show(B));
            B.calculate(Matrix2, Val, x, step2); 
            
            Console.Write("A + B=");
            Console.WriteLine(C.show(C) + "\n");
            Console.Write("A - B=");
            Console.WriteLine(D.show(D) + "\n");
            Console.Write("A * B=");
            Console.WriteLine(E.show(E) + "\n");
            Console.ReadLine();
        }           
    }
}
0
3 / 3 / 1
Регистрация: 20.11.2012
Сообщений: 197
09.06.2016, 20:52  [ТС] 5
Скажите, пожалуйста, как сделать, чтобы полином выводился в другую сторону?
т.е например не x^3+2x^2+5x^1 а надо x^1+2x^2+5x^3
что исправить вот в этом методе?
C#
1
2
3
4
5
6
7
8
public int vivod(Mnogochlen A)
            {
                for (int i = 0; i < step; i++)
                { 
                    Console.Write("+" + A.koef[i] + "x^" + (step - i)); 
                } 
                return 0;
            }
Добавлено через 2 часа 50 минут
почему-то считает неправильно при сложении и умножении, где ошибка?


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
147
148
149
150
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication3
{
 
    class Mnogochlen
    {
         
        int[] koef; //массив коэф-ов
        int step; //значение степени полинома
  
        public Mnogochlen(int[] k, int s)
          {
             koef = k;
             step = s;
          }
          
          //сложение полиномов
        public static Mnogochlen operator +(Mnogochlen A, Mnogochlen B)
          {
                int D1 = A.step;
                int[] M1 = new int[D1 + 1];
                Mnogochlen C = new Mnogochlen(M1, D1);
                for (int i = 0; i < A.step + 1; i++)
                {
                    C.koef[i] = A.koef[i] + B.koef[i];
                }
                return C;
           }
           
 
        //вычитание полиномов
        public static Mnogochlen operator -(Mnogochlen A, Mnogochlen B)
            {
                int D1 = A.step;
                int[] M1 = new int[D1 + 1];
                Mnogochlen C = new Mnogochlen(M1, D1);
                for (int i = 0; i < A.step + 1; i++)
                {
                    C.koef[i] = A.koef[i] - B.koef[i];
                }
                return C;
            }
            
 
        //умножение полиномов
        public static Mnogochlen operator *(Mnogochlen A, Mnogochlen B)
            {
                int D1 = A.step;
                int[] M1 = new int[D1 + 1];
                Mnogochlen C = new Mnogochlen(M1, D1);
                for (int i = 0; i < A.step + 1; i++)
                {
                    C.koef[i] = A.koef[i] * B.koef[i];
                }
                return C;
            }
                
            
 
       //вывод полинома
        public void show()
            {
                for (int i = 0; i < step; i++)
                { 
                    Console.Write("+" + koef[i] + "x^" + (step - i));
                } 
                //return 0;
            }
}
 
 
 
    class Program
    {
        static void Main(string[] args)
        {
            //ввод первого многочлена
            int step;         
            int[] koef;
 
            Console.WriteLine("Введите степень первого многочлена:");  
            step = Convert.ToInt32(Console.ReadLine());
          
            int Val = 0;
            int[] Matrix1 = { 1, 2, 3, 4 };
 
            Console.WriteLine("Введите размер первого массива");
            koef = new int[Int32.Parse(Console.ReadLine())];
 
            Console.WriteLine("Введите матрицу коэффициентов первого многочлена:");
            for (int i = 0; i < koef.Length; i++)
            {
                koef[i] = Int32.Parse(Console.ReadLine());
            }
            Mnogochlen A = new Mnogochlen(koef, step);
 
 
 
 
 
            //ввод первого многочлена
            int step2;
            int[] koef2;
 
            Console.WriteLine("Введите степень второго многочлена:");
            step2 = Convert.ToInt32(Console.ReadLine());
            
            int[] Matrix2 = { 1, 2, 3, 4 };
 
            Console.WriteLine("Введите размер второго массива");
            koef2 = new int[Int32.Parse(Console.ReadLine())];
 
            Console.WriteLine("Введите матрицу коэффициентов второго многочлена:");
            for (int i = 0; i < koef2.Length; i++)
            {
                koef2[i] = Int32.Parse(Console.ReadLine());
            }
            Mnogochlen B = new Mnogochlen(koef2, step2);
 
 
 
            //вывод многочленов
            Console.Write("A= ");
            A.show();           
            Console.WriteLine("\n");
            Console.Write("B= ");
            B.show();
              
 
            //вывод операций
            A = new Mnogochlen(Matrix1, step);
            B = new Mnogochlen(Matrix2, step2);
            Mnogochlen C = A + B;
            Mnogochlen D = A - B;
            Mnogochlen E = A * B;
            Console.Write("A+B= ");
            C.show();
            Console.Write("A-B= ");
            D.show();
            Console.Write("A*B= ");
            E.show();    
            Console.ReadLine();
        }           
    }
}
0
0 / 0 / 0
Регистрация: 27.02.2021
Сообщений: 89
31.01.2022, 18:19 6
добрый день, вам удалось сделать код этой программы. Если да, можете пожалуйста показать итог
0
31.01.2022, 18:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.01.2022, 18:19
Помогаю со студенческими работами здесь

Составить описание класса многочленов от одной переменной, задаваемых степенью многочлена и массивом коэффициентов
Помогите, пожалуйста. Есть следующая задача Составить описание класса многочлена от одной...

Составить описание класса многочленов от одной переменной, задаваемых степенью многочлена и массивом коэффициентов.
Нужна программа на Java. Задание звучит так: Составить описание класса многочленов от одной...

Составить описание классов многочленов от одной переменной, задаваемых степенью многочлена и массивом коэффициентов
Помогите решить задачу, заранее спасибо) Составить описание классов многочленов от одной...

Многочлен Pn (x) задан массивом собственных коэффициентов A (n + 1). Найти массив коэффициентов производной этого многочлена
Многочлен Pn (x) задан массивом собственных коэффициентов A (n + 1). Найти массив коэффициентов...

Степенной полином с динамическим массивом коэффициентов
степенной полином с динамическим массивом коэффициентов. как это выглядит на С ?? помогите...

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru