Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace zad1v2
- {
- /*
- * Chcemy reprezentować wielomiany w postaci listy jednokierunkowej par (współczynnik; wykładnik).
- * Uwaga:przechowujemy tylko współczynniki niezerowe.
- * Napisz zestaw metod do tworzenia takich wielomianów na podstawie tablicy,
- * a także dodawania i odejmowania takich wielomianów oraz różniczkowania.
- * Np.tworzenie z tablicy{1,2,5,0,0,8} oznacza 8x5+ 5x2+ 2x + 1.
- * Odpowiednia lista ma mieć postać (8;5)->(5;2)->(2;1)->(1;0)
- */
- class Program
- {
- static void Main(string[] args)
- {
- int[] tablicatestowa = { 1, 2, 5, 0, 0, 8 };
- int[] tablicatestowa2 = { 10,16,22,1,5,3 };
- Wielomian w1 = new Wielomian(tablicatestowa);
- Wielomian w2 = new Wielomian(tablicatestowa2);
- w1.Wypisz();
- w2.Wypisz();
- Console.WriteLine();
- Wielomian w3 = Wielomian.DodajWielomiany(w1, w2);
- w3.Wypisz();
- Wielomian w1 = new Wielomian(tablicatestowa);
- Wielomian w2 = new Wielomian(tablicatestowa2);
- Console.WriteLine();
- Wielomian w4 = Wielomian.OdejmijWielomiany(w1, w2);
- w4.Wypisz();
- Console.ReadKey();
- }
- }
- class Wielomian
- {
- public Węzeł głowa;
- public Wielomian()
- {
- }
- public Wielomian(int[]wejscie) //tworzenie
- {
- if (wejscie.Length==0)
- {
- return;
- }
- głowa = new Węzeł(wejscie[wejscie.Length - 1], wejscie.Length - 1);
- Węzeł tmp = głowa;
- głowa.następny = tmp;
- for (int i = wejscie.Length-2; i >=0 ; i--)
- {
- if (wejscie[i]!=0)
- {
- tmp.następny = new Węzeł(wejscie[i], i);
- tmp = tmp.następny;
- }
- }
- }
- public static Wielomian DodajWielomiany(Wielomian w1, Wielomian w2)
- {
- Wielomian w3 = new Wielomian();
- Wielomian w11 = w1;
- Wielomian w22 = w2;
- if ((w11==null && w22==null) || (w11.głowa==null &&w22.głowa==null))
- {
- return null;
- }
- if (w11 == null || w11.głowa==null)
- {
- w3 = w22;
- return w3;
- }
- if (w22==null || w22.głowa==null)
- {
- w3 = w11;
- return w3;
- }
- Węzeł tmp1 = w11.głowa;
- Węzeł tmp2 = w22.głowa;
- if (tmp1.wykładnik>tmp2.wykładnik)
- {
- w3.głowa = tmp1;
- tmp1 = tmp1.następny;
- }
- else if (tmp1.wykładnik < tmp2.wykładnik)
- {
- w3.głowa = tmp2;
- tmp2 = tmp2.następny;
- }
- else //(tmp1.wykładnik==tmp2.wykładnik)
- {
- w3.głowa = new Węzeł(tmp1.współczynnik + tmp2.współczynnik, tmp1.wykładnik);
- tmp1 = tmp1.następny;
- tmp2 = tmp2.następny;
- }
- Węzeł tmp3 = w3.głowa;
- w3.głowa.następny = tmp3;
- while (tmp1!=null && tmp2!=null)
- {
- if (tmp1.wykładnik> tmp2.wykładnik)
- {
- tmp3.następny = tmp1;
- tmp3 = tmp3.następny;
- tmp1 = tmp1.następny;
- }
- if (tmp1.wykładnik < tmp2.wykładnik)
- {
- tmp3.następny = tmp2;
- tmp3 = tmp3.następny;
- tmp2 = tmp2.następny;
- }
- if (tmp1.wykładnik == tmp2.wykładnik)
- {
- tmp3.następny = new Węzeł(tmp1.współczynnik + tmp2.współczynnik, tmp1.wykładnik);
- tmp3 = tmp3.następny;
- tmp1 = tmp1.następny;
- tmp2 = tmp2.następny;
- }
- }
- return w3;
- }
- public static Wielomian OdejmijWielomiany(Wielomian w1, Wielomian w2)
- {
- Wielomian w3 = new Wielomian();
- if ((w1 == null && w2 == null) || (w1.głowa == null && w2.głowa == null))
- {
- return null;
- }
- if (w1 == null || w1.głowa == null)
- {
- w3 = w2;
- return w3;
- }
- if (w2 == null || w2.głowa == null)
- {
- w3 = w1;
- return w3;
- }
- Węzeł tmp1 = w1.głowa;
- Węzeł tmp2 = w2.głowa;
- if (tmp1.wykładnik > tmp2.wykładnik)
- {
- w3.głowa = tmp1;
- tmp1 = tmp1.następny;
- }
- else if (tmp1.wykładnik < tmp2.wykładnik)
- {
- w3.głowa = new Węzeł(-tmp2.współczynnik, tmp2.wykładnik);
- tmp2 = tmp2.następny;
- }
- else //(tmp1.wykładnik==tmp2.wykładnik)
- {
- w3.głowa = new Węzeł(tmp1.współczynnik - tmp2.współczynnik, tmp1.wykładnik);
- tmp1 = tmp1.następny;
- tmp2 = tmp2.następny;
- }
- Węzeł tmp3 = w3.głowa;
- w3.głowa.następny = tmp3;
- while (tmp1 != null && tmp2 != null)
- {
- if (tmp1.wykładnik > tmp2.wykładnik)
- {
- tmp3.następny = tmp1;
- tmp3 = tmp3.następny;
- tmp1 = tmp1.następny;
- }
- if (tmp1.wykładnik < tmp2.wykładnik)
- {
- tmp3.następny = new Węzeł(-tmp2.współczynnik, tmp2.wykładnik);
- tmp3 = tmp3.następny;
- tmp2 = tmp2.następny;
- }
- if (tmp1.wykładnik == tmp2.wykładnik)
- {
- tmp3.następny = new Węzeł(tmp1.współczynnik - tmp2.współczynnik, tmp1.wykładnik);
- tmp3 = tmp3.następny;
- tmp1 = tmp1.następny;
- tmp2 = tmp2.następny;
- }
- }
- return w3;
- }
- public void Wypisz()
- {
- Węzeł tmp = głowa;
- while (tmp!=null)
- {
- if (tmp.następny!=null)
- {
- Console.Write($"({tmp.współczynnik},{tmp.wykładnik})->");
- }
- else
- {
- Console.Write($"({tmp.współczynnik},{tmp.wykładnik})");
- }
- tmp = tmp.następny;
- }
- Console.WriteLine();
- }
- public void DodajElement(Węzeł w)
- {
- Węzeł tmp = głowa;
- while (tmp.następny!=null)
- {
- tmp = tmp.następny;
- }
- tmp.następny = w;
- }
- }
- class Węzeł
- {
- public int współczynnik;
- public int wykładnik;
- public Węzeł następny;
- public Węzeł()
- {
- }
- public Węzeł(int współ, int wykł)
- {
- współczynnik = współ;
- wykładnik = wykł;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement