Advertisement
Guest User

Untitled

a guest
Jan 19th, 2020
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.64 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace zad1v2
  8. {
  9.     /*
  10.     * Chcemy reprezentować wielomiany  w postaci listy jednokierunkowej  par (współczynnik; wykładnik).
  11.     * Uwaga:przechowujemy tylko współczynniki niezerowe.
  12.     * Napisz zestaw metod do tworzenia takich wielomianów na podstawie tablicy,
  13.     * a także dodawania i odejmowania takich wielomianów oraz różniczkowania.
  14.     * Np.tworzenie z tablicy{1,2,5,0,0,8} oznacza 8x5+ 5x2+ 2x + 1.
  15.     * Odpowiednia lista ma mieć postać (8;5)->(5;2)->(2;1)->(1;0)
  16.    */
  17.     class Program
  18.     {
  19.         static void Main(string[] args)
  20.         {
  21.             int[] tablicatestowa = { 1, 2, 5, 0, 0, 8 };
  22.             int[] tablicatestowa2 = { 10,16,22,1,5,3 };
  23.             Wielomian w1 = new Wielomian(tablicatestowa);
  24.             Wielomian w2 = new Wielomian(tablicatestowa2);
  25.             w1.Wypisz();
  26.             w2.Wypisz();
  27.             Console.WriteLine();
  28.            Wielomian w3 = Wielomian.DodajWielomiany(w1, w2);
  29.            w3.Wypisz();
  30.             Wielomian w1 = new Wielomian(tablicatestowa);
  31.             Wielomian w2 = new Wielomian(tablicatestowa2);
  32.             Console.WriteLine();
  33.            Wielomian w4 = Wielomian.OdejmijWielomiany(w1, w2);
  34.             w4.Wypisz();
  35.             Console.ReadKey();
  36.         }
  37.     }
  38.     class Wielomian
  39.     {
  40.         public Węzeł głowa;
  41.         public Wielomian()
  42.         {
  43.  
  44.         }
  45.         public Wielomian(int[]wejscie) //tworzenie
  46.         {
  47.             if (wejscie.Length==0)
  48.             {
  49.                 return;
  50.             }
  51.             głowa = new Węzeł(wejscie[wejscie.Length - 1], wejscie.Length - 1);
  52.             Węzeł tmp = głowa;
  53.             głowa.następny = tmp;
  54.             for (int i = wejscie.Length-2; i >=0 ; i--)
  55.             {
  56.                 if (wejscie[i]!=0)
  57.                 {
  58.                     tmp.następny = new Węzeł(wejscie[i], i);
  59.                     tmp = tmp.następny;
  60.                 }
  61.             }
  62.  
  63.  
  64.         }
  65.         public static Wielomian DodajWielomiany(Wielomian w1, Wielomian w2)
  66.         {
  67.             Wielomian w3 = new Wielomian();
  68.             Wielomian w11 = w1;
  69.             Wielomian w22 = w2;
  70.             if ((w11==null && w22==null) || (w11.głowa==null &&w22.głowa==null))
  71.             {
  72.                 return null;
  73.             }
  74.             if (w11 == null || w11.głowa==null)
  75.             {
  76.                 w3 = w22;
  77.                 return w3;
  78.             }
  79.             if (w22==null || w22.głowa==null)
  80.             {
  81.                 w3 = w11;
  82.                 return w3;
  83.             }
  84.             Węzeł tmp1 = w11.głowa;
  85.             Węzeł tmp2 = w22.głowa;
  86.            
  87.             if (tmp1.wykładnik>tmp2.wykładnik)
  88.             {
  89.                 w3.głowa = tmp1;
  90.                 tmp1 = tmp1.następny;
  91.             }
  92.             else if (tmp1.wykładnik < tmp2.wykładnik)
  93.             {
  94.                 w3.głowa = tmp2;
  95.                 tmp2 = tmp2.następny;
  96.             }
  97.             else //(tmp1.wykładnik==tmp2.wykładnik)
  98.             {
  99.                 w3.głowa = new Węzeł(tmp1.współczynnik + tmp2.współczynnik, tmp1.wykładnik);
  100.                 tmp1 = tmp1.następny;
  101.                 tmp2 = tmp2.następny;
  102.             }
  103.             Węzeł tmp3 = w3.głowa;
  104.             w3.głowa.następny = tmp3;
  105.             while (tmp1!=null && tmp2!=null)
  106.             {
  107.                 if (tmp1.wykładnik> tmp2.wykładnik)
  108.                 {
  109.                     tmp3.następny = tmp1;
  110.                     tmp3 = tmp3.następny;
  111.                     tmp1 = tmp1.następny;
  112.                 }
  113.  
  114.                 if (tmp1.wykładnik < tmp2.wykładnik)
  115.                 {
  116.                     tmp3.następny = tmp2;
  117.                     tmp3 = tmp3.następny;
  118.                     tmp2 = tmp2.następny;
  119.                 }
  120.  
  121.                 if (tmp1.wykładnik == tmp2.wykładnik)
  122.                 {
  123.                     tmp3.następny = new Węzeł(tmp1.współczynnik + tmp2.współczynnik, tmp1.wykładnik);
  124.                     tmp3 = tmp3.następny;
  125.                     tmp1 = tmp1.następny;
  126.                     tmp2 = tmp2.następny;
  127.                 }
  128.  
  129.             }
  130.  
  131.             return w3;
  132.  
  133.         }
  134.  
  135.         public static Wielomian OdejmijWielomiany(Wielomian w1, Wielomian w2)
  136.         {
  137.             Wielomian w3 = new Wielomian();
  138.             if ((w1 == null && w2 == null) || (w1.głowa == null && w2.głowa == null))
  139.             {
  140.                 return null;
  141.             }
  142.             if (w1 == null || w1.głowa == null)
  143.             {
  144.                 w3 = w2;
  145.                 return w3;
  146.             }
  147.             if (w2 == null || w2.głowa == null)
  148.             {
  149.                 w3 = w1;
  150.                 return w3;
  151.             }
  152.             Węzeł tmp1 = w1.głowa;
  153.             Węzeł tmp2 = w2.głowa;
  154.  
  155.             if (tmp1.wykładnik > tmp2.wykładnik)
  156.             {
  157.                 w3.głowa = tmp1;
  158.                 tmp1 = tmp1.następny;
  159.             }
  160.             else if (tmp1.wykładnik < tmp2.wykładnik)
  161.             {
  162.                 w3.głowa = new Węzeł(-tmp2.współczynnik, tmp2.wykładnik);
  163.                 tmp2 = tmp2.następny;
  164.             }
  165.             else //(tmp1.wykładnik==tmp2.wykładnik)
  166.             {
  167.                 w3.głowa = new Węzeł(tmp1.współczynnik - tmp2.współczynnik, tmp1.wykładnik);
  168.                 tmp1 = tmp1.następny;
  169.                 tmp2 = tmp2.następny;
  170.             }
  171.             Węzeł tmp3 = w3.głowa;
  172.             w3.głowa.następny = tmp3;
  173.             while (tmp1 != null && tmp2 != null)
  174.             {
  175.                 if (tmp1.wykładnik > tmp2.wykładnik)
  176.                 {
  177.                     tmp3.następny = tmp1;
  178.                     tmp3 = tmp3.następny;
  179.                     tmp1 = tmp1.następny;
  180.                 }
  181.  
  182.                 if (tmp1.wykładnik < tmp2.wykładnik)
  183.                 {
  184.                     tmp3.następny = new Węzeł(-tmp2.współczynnik, tmp2.wykładnik);
  185.                     tmp3 = tmp3.następny;
  186.                     tmp2 = tmp2.następny;
  187.                 }
  188.  
  189.                 if (tmp1.wykładnik == tmp2.wykładnik)
  190.                 {
  191.                     tmp3.następny = new Węzeł(tmp1.współczynnik - tmp2.współczynnik, tmp1.wykładnik);
  192.                     tmp3 = tmp3.następny;
  193.                     tmp1 = tmp1.następny;
  194.                     tmp2 = tmp2.następny;
  195.                 }
  196.  
  197.             }
  198.  
  199.             return w3;
  200.  
  201.         }
  202.         public void Wypisz()
  203.         {
  204.             Węzeł tmp = głowa;
  205.             while (tmp!=null)
  206.             {
  207.                 if (tmp.następny!=null)
  208.                 {
  209.                     Console.Write($"({tmp.współczynnik},{tmp.wykładnik})->");
  210.                 }
  211.                 else
  212.                 {
  213.                     Console.Write($"({tmp.współczynnik},{tmp.wykładnik})");
  214.                 }
  215.                
  216.                 tmp = tmp.następny;
  217.             }
  218.             Console.WriteLine();
  219.         }
  220.         public void DodajElement(Węzeł w)
  221.         {
  222.             Węzeł tmp = głowa;
  223.             while (tmp.następny!=null)
  224.             {
  225.                 tmp = tmp.następny;
  226.             }
  227.             tmp.następny = w;
  228.         }
  229.     }
  230.     class Węzeł
  231.     {
  232.         public int współczynnik;
  233.         public int wykładnik;
  234.         public Węzeł następny;
  235.         public Węzeł()
  236.         {
  237.  
  238.         }
  239.         public Węzeł(int współ, int wykł)
  240.         {
  241.             współczynnik = współ;
  242.             wykładnik = wykł;
  243.         }
  244.     }
  245. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement