Класс Полином и операции над ним - C#
Формулировка задачи:
Проблема в том, что программа считает неправильно при сложении полиномов ,умножении, вычитании. где ошибка?
Само задание: 1.Необходимо создать класс Полином (от одной переменной) в котором задается степень многочлена и массив коэффициентов, вводимых из консоли.
2.Создать для этого класса методы для вычисления значения полинома для заданного аргумента, операции сложения, вычитания и умножения многочлена с получением нового объекта-многочлена, вывод на экран описания многочлена.
Листинг программы
- 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();
- }
- }
- }
Решение задачи: «Класс Полином и операции над ним»
textual
Листинг программы
- 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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д