public static Loshara operator +(Loshara a,Lashara b)
{return new Loshara(a.lol+b.lol,a.xd+b.xd);} - перегрузка оператора в классе Loshara
Тело программы:
c = a+b; где a,b,c - экземпляры лошар.
Почему у меня в результате выполнения этой перегрузки оператора а принимает значение a+b и c принимает a+b, а не только c?!
Примечание:
class Loshara
{
private int lol;
private int xd;
public Loshara(int a1, int a2)
{
lol=a1;
xd=a2
}
public static Loshara operator + (Loshara a, Loshara b)
{return new Loshara(a.lol+b.lol,a.xd+b.xd);}
public static Loshara operator - (Loshara a, Loshara b)
{return new Loshara(a.lol-b.lol,a.xd-b.xd);}
}
Далее код программы
{
...
Loshara loh1 = new Loshara(4,5);
Loshara loh2 = new Loshara(5,3);
Loshara loh3;
loh3=loh1+loh2;
...
}
loh3 и loh1 - получаются равными!
Примечание:
class Mnogochlen
{
private readonly int[] factor;
public Mnogochlen()
{
factor = new int[1];
factor[0] = 0;
}//Если без параметров
public Mnogochlen(int[] input)
{
factor = input;
}//В качестве параметра поступает массив коэф.
public override string ToString()//Для вывода многочлена
{
string s="";
for (int i = factor.Length-1; i > 0; i--) s += factor[i] + "x^" + i+" + ";
s += factor[0];
return s;
}
public static Mnogochlen operator +(Mnogochlen a, Mnogochlen b)
{
int[] factorofnew;
int iterations;
{
if (a.factor.Length >= b.factor.Length)
{
factorofnew = new int[a.factor.Length];
factorofnew = a.factor;
iterations = b.factor.Length-1;
}
else
{
factorofnew = new int[b.factor.Length];
factorofnew = b.factor;
iterations = a.factor.Length-1;
}
}
for (int i = iterations; i >= 0; i--)
{
factorofnew[i] = (a.factor[i] + b.factor[i]);
}
return new Mnogochlen(factorofnew);
}
public static Mnogochlen operator -(Mnogochlen a, Mnogochlen b)
{
int[] factorofnew;
int iterations;
{
if (a.factor.Length >= b.factor.Length)
{
factorofnew = new int[a.factor.Length];
factorofnew = a.factor;
iterations = b.factor.Length - 1;
}
else
{
factorofnew = new int[b.factor.Length];
factorofnew = b.factor;
iterations = a.factor.Length - 1;
}
}
for (int i = iterations; i >= 0; i--)
{
factorofnew[i] = (a.factor[i] - b.factor[i]);
}
return new Mnogochlen(factorofnew);
}
Ладно, хотел абстрактный пример. Вот собственно этот класс не работает как надо.
namespace Polinomizm
{
class Program
{
static public void Main()
{
int[] demo1 = new int[5];
for (int i=0; i<5;i++)
{
demo1[i]=i;
}
Mnogochlen a = new Mnogochlen(demo1);
demo1 = new int[4];
for (int i=0; i<4;i++)
{
demo1[i]=i*2;
}
Mnogochlen b = new Mnogochlen(demo1);
Mnogochlen c;
Console.WriteLine("A = "+a.ToString());
Console.WriteLine("B = " + b.ToString());
c=a+b;
Console.WriteLine("Операция сложения прошла");
Console.WriteLine("A = " + a.ToString());
Console.WriteLine("B = " + b.ToString());
Console.WriteLine("C = "+c.ToString());
c = a - b;
Console.WriteLine("Операция вычитания прошла");
Console.WriteLine("A = " + a.ToString());
Console.WriteLine("B = " + b.ToString());
Console.WriteLine("C = " + c.ToString());
Console.ReadLine();
}
}
}
Вот весь код, и он не робит(
Примечание:
ВСЁ, Разобрался. Приходиться работать поэлементно:)