Класс Полином и операции над ним - 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д