Advertisement
Guest User

Untitled

a guest
May 21st, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 12.66 KB | None | 0 0
  1. using System;
  2.  
  3. namespace ConsoleApp3
  4. {
  5.    
  6.    
  7.     interface IA
  8.     {
  9.         float oblicz_deltar(int a, int b, int c, int d);
  10.         float oblicz_deltau(int a, int b, int c, int d);
  11.         void oblicz_pdeltar(int a, int b, int c, int d, Program.lzespolona delta);
  12.         void oblicz_pdeltau(int a, int b, int c, int d, Program.lzespolona delta);
  13.         void dodaj(Program.lzespolona delta);
  14.         void odejmij(Program.lzespolona delta);
  15.         void pomnoz(Program.lzespolona delta);
  16.         void wyswietl(Program.lzespolona delta);
  17.         void oblicz_pierwiastek(int a, int b, int c, int d, Program.lzespolona delta);
  18.     }
  19.  
  20.     class B:IA {
  21.         protected Program.lzespolona x1;
  22.         virtual public float oblicz_deltar(int a, int b, int c, int d) { return  0.0f; }
  23.         virtual public float oblicz_deltau(int a, int b, int c, int d) { return  0.0f; }
  24.         virtual public void oblicz_pdeltar(int a, int b, int c, int d, Program.lzespolona delta) { }
  25.         virtual public void oblicz_pdeltau(int a, int b, int c, int d, Program.lzespolona delta) { }
  26.         virtual public void dodaj(Program.lzespolona delta) { }
  27.         virtual public void odejmij(Program.lzespolona delta) { }
  28.         virtual public void pomnoz(Program.lzespolona delta) { }
  29.         virtual public void wyswietl(Program.lzespolona delta) {
  30.             Console.Write("x1 = ");
  31.             Program.format_lzesp(x1);
  32.         }
  33.         virtual public void oblicz_pierwiastek(int a, int b, int c, int d, Program.lzespolona delta) {
  34.             this.x1.cz_rz = (-1.0f * c) / b;
  35.         }
  36.         public B() {
  37.             x1 = new Program.lzespolona();
  38.             x1.cz_rz = 0;
  39.             x1.cz_ur = 0;
  40.         }
  41.     };
  42.     class BD : B {
  43.         public BD():base(){ }
  44.         new virtual public void oblicz_pierwiastek(int a, int b, int c, int d, Program.lzespolona delta) {
  45.             this.x1.cz_rz = (-1.0f * c) / b;
  46.             this.x1.cz_ur = (-1.0f * d) / b;
  47.         }
  48.  
  49.     };
  50.     class AB : B {
  51.         protected Program.lzespolona il;
  52.         protected Program.lzespolona s;
  53.         protected Program.lzespolona r;
  54.         protected Program.lzespolona pdelta;
  55.         protected Program.lzespolona x2;
  56.         public AB():base() {
  57.             il = new Program.lzespolona();
  58.             s = new Program.lzespolona();
  59.             r = new Program.lzespolona();
  60.             pdelta = new Program.lzespolona();
  61.             x2 = new Program.lzespolona();
  62.             x1.cz_rz = 0;
  63.             x1.cz_ur = 0;
  64.             x2.cz_rz = 0;
  65.             x2.cz_ur = 0;
  66.  
  67.             il.cz_rz = 0;
  68.             il.cz_ur = 0;
  69.             s.cz_rz = 0;
  70.             s.cz_ur = 0;
  71.             r.cz_rz = 0;
  72.             r.cz_ur = 0;
  73.         }
  74.         new virtual public void wyswietl(Program.lzespolona delta) {
  75.             Console.Write("delta = ");
  76.             Program.format_lzesp(delta);
  77.             if (delta.cz_rz > 0) {
  78.                 Console.Write("pdelta = ");
  79.                 Program.format_lzesp(pdelta);
  80.             }
  81.             Console.Write("x1 = ");
  82.             Program.format_lzesp(x1);
  83.             if (delta.cz_rz != 0) {
  84.                 Console.Write("x2 = ");
  85.                 Program.format_lzesp(x2);
  86.                 Console.Write("iloraz = ");
  87.                 Program.format_lzesp(il);
  88.                 Console.Write("suma = ");
  89.                 Program.format_lzesp(s);
  90.                 Console.Write("roznica = ");
  91.                 Program.format_lzesp(r);
  92.             }
  93.         }
  94.         new virtual public float oblicz_deltar(int a, int b, int c, int d) {
  95.             return ((float)b*(float)b) - 4.0f * a*c;
  96.         }
  97.         new virtual public float oblicz_deltau(int a, int b, int c, int d) {
  98.  
  99.             return  0.0f;
  100.         }
  101.         new virtual public void oblicz_pdeltar(int a, int b, int c, int d, Program.lzespolona delta) {
  102.             this.pdelta.cz_rz = (float)Math.Sqrt(delta.cz_rz);
  103.         }
  104.         new virtual public void oblicz_pdeltau(int a, int b, int c, int d, Program.lzespolona delta) {
  105.             this.pdelta.cz_ur=0;
  106.         }
  107.         new virtual public void dodaj(Program.lzespolona delta) {
  108.             if (delta.cz_ur == 0 && delta.cz_rz > 0) {
  109.                 s.cz_rz = x1.cz_rz + x2.cz_rz;
  110.             }
  111.             else if  (delta.cz_ur == 0 && delta.cz_rz < 0) {
  112.                 s.cz_rz = x1.cz_rz + x2.cz_rz;
  113.                 s.cz_ur = x1.cz_ur + x2.cz_ur;
  114.             }
  115.         }
  116.         new virtual public void odejmij(Program.lzespolona delta) {
  117.             if (delta.cz_ur == 0 && delta.cz_rz > 0) {
  118.                 r.cz_rz = x1.cz_rz - x2.cz_rz;
  119.             }
  120.             else if (delta.cz_ur == 0 && delta.cz_rz < 0) {
  121.                 r.cz_rz = x1.cz_rz - x2.cz_rz;
  122.                 r.cz_ur = x1.cz_ur - x2.cz_ur;
  123.             }
  124.         }
  125.         new virtual public void pomnoz(Program.lzespolona delta) {
  126.             if (delta.cz_ur == 0 && delta.cz_rz > 0) {
  127.                 il.cz_rz = x1.cz_rz * x2.cz_rz;
  128.             }
  129.             else if (delta.cz_ur == 0 && delta.cz_rz < 0) {
  130.                 il.cz_rz = (x1.cz_rz * x2.cz_rz) - (x1.cz_ur * x1.cz_ur);
  131.                 il.cz_ur = (x1.cz_rz * x2.cz_ur) - (x1.cz_ur * x1.cz_rz);
  132.             }
  133.         }
  134.         new virtual public void oblicz_pierwiastek(int a, int b, int c, int d, Program.lzespolona delta) {
  135.             if (delta.cz_rz> 0) {
  136.                 oblicz_pdeltar(a, b, c, d, delta);
  137.                 x1.cz_rz = -1.0f*(-1.0f*b - pdelta.cz_rz) / (2.0f * a);
  138.                 x2.cz_rz = -1.0f*(-1.0f*b + pdelta.cz_rz) / (2.0f * a);
  139.             }
  140.             else if (delta.cz_rz == 0) {
  141.                 x1.cz_rz = ((-1.0f *b / (2.0f * a)));
  142.             }
  143.             else if (delta.cz_rz< 0) {
  144.                 x1.cz_rz = ((-1.0f *b / (2.0f * a)));
  145.                 x1.cz_ur = -1.0f * (((float)Math.Sqrt((float)Math.Abs(delta.cz_rz)) / (2.0f * a)));
  146.                 x2.cz_rz = x1.cz_rz;
  147.                 x2.cz_ur = -1.0f * x1.cz_ur;
  148.             }
  149.         }
  150.     };
  151.  
  152.     class AD : AB {
  153.    
  154.         private Program.lzespolona x3, x4;
  155.         public AD():base(){
  156.             x3 = new Program.lzespolona();
  157.             x4 = new Program.lzespolona();
  158.             x1.cz_rz = 0;
  159.             x1.cz_ur = 0;
  160.             x2.cz_rz = 0;
  161.             x2.cz_ur = 0;
  162.             il.cz_rz = 0;
  163.             il.cz_ur = 0;
  164.             s.cz_rz = 0;
  165.             s.cz_ur = 0;
  166.             r.cz_rz = 0;
  167.             r.cz_ur = 0;
  168.             x3.cz_rz = 0;
  169.             x3.cz_ur = 0;
  170.             x4.cz_rz = 0;
  171.             x4.cz_ur = 0;
  172.         }
  173.         override public float oblicz_deltar(int a, int b, int c, int d) {
  174.  
  175.             return (1.0f*b*b) - 4.0f * a*c;
  176.         }
  177.         override public float oblicz_deltau(int a, int b, int c, int d) {
  178.  
  179.             return (-4.0f * a*d);
  180.         }
  181.         override public void oblicz_pdeltar(int a, int b, int c, int d, Program.lzespolona delta) {
  182.  
  183.             pdelta.cz_rz = (float)Math.Sqrt((Math.Sqrt(((((delta.cz_rz * delta.cz_rz) + (delta.cz_ur * delta.cz_ur)) + delta.cz_rz) / 2.0f))));
  184.         }
  185.         override public void oblicz_pdeltau(int a, int b, int c, int d, Program.lzespolona delta) {
  186.             pdelta.cz_ur = (float)Math.Sqrt((Math.Sqrt((delta.cz_rz * delta.cz_rz) + (delta.cz_ur * delta.cz_ur)) - delta.cz_rz) / 2.0f);
  187.         }
  188.         override public void wyswietl(Program.lzespolona delta) {
  189.             Console.Write("delta = ");
  190.             Program.format_lzesp(delta);
  191.             Console.Write("pdelta = ");
  192.             Program.format_lzesp(pdelta);
  193.             Console.Write("x1 = ");
  194.             Program.format_lzesp(x1);
  195.             Console.Write("x2 = ");
  196.             Program.format_lzesp(x2);
  197.             Console.Write("x3 = ");
  198.             Program.format_lzesp(x3);
  199.             Console.Write("x4 = ");
  200.             Program.format_lzesp(x4);
  201.             Console.Write("iloraz = ");
  202.             Program.format_lzesp(il);
  203.             Console.Write("suma = ");
  204.             Program.format_lzesp(s);
  205.             Console.Write("roznica = ");
  206.             Program.format_lzesp(r);
  207.         }
  208.         override public void dodaj(Program.lzespolona delta) {
  209.                 s.cz_rz = x1.cz_rz + x2.cz_rz + x3.cz_rz + x4.cz_rz;
  210.                 s.cz_ur = x1.cz_ur + x2.cz_ur + x3.cz_ur + x4.cz_ur;
  211.         }
  212.         override public void odejmij(Program.lzespolona delta) {
  213.  
  214.                 r.cz_rz = x1.cz_rz - x2.cz_rz - x3.cz_rz - x4.cz_rz;
  215.                 r.cz_ur = x1.cz_ur - x2.cz_ur - x3.cz_ur - x4.cz_ur;
  216.  
  217.         }
  218.         override public void pomnoz(Program.lzespolona delta) {
  219.             il.cz_rz = (x1.cz_rz * x2.cz_rz - x1.cz_ur * x2.cz_ur) * (x3.cz_rz * x4.cz_rz - x3.cz_ur * x4.cz_ur) - (x1.cz_rz * x2.cz_ur + x1.cz_ur * x2.cz_rz) * (x3.cz_rz * x4.cz_rz + x3.cz_ur * x4.cz_ur);
  220.             il.cz_ur = (x1.cz_rz * x2.cz_rz - x1.cz_ur * x2.cz_ur) * (x3.cz_rz * x4.cz_rz + x3.cz_ur * x4.cz_ur) + (x1.cz_rz * x2.cz_ur + x1.cz_ur * x2.cz_rz) * (x3.cz_rz * x4.cz_rz - x3.cz_ur * x4.cz_ur);
  221.         }
  222.         override public void oblicz_pierwiastek(int a, int b, int c, int d, Program.lzespolona delta) {
  223.             oblicz_pdeltar(a, b, c, d, delta);
  224.             oblicz_pdeltau(a, b, c, d, delta);
  225.             x1.cz_rz = (((-1.0f*b) - pdelta.cz_rz) / (2.0f * a));
  226.             x2.cz_rz = x1.cz_rz;
  227.             x1.cz_ur = (((-1.0f*b) - pdelta.cz_ur) / (2.0f * a));
  228.             x2.cz_ur = -(x1.cz_ur);
  229.             x3.cz_rz = (((-1.0f*b) + pdelta.cz_rz) / (2.0f * a));
  230.             x4.cz_rz = x3.cz_rz;
  231.             x3.cz_ur = (((-1.0f*b) + pdelta.cz_ur) / (2.0f * a));
  232.             x4.cz_ur = -(x3.cz_ur);
  233.         }
  234.     };
  235.  
  236.     class rownanie {
  237.     private int a, b, c, d;
  238.         private Program.lzespolona delta;
  239.     private IA Rownanie;
  240.         public void formatuj() {
  241.             if (a != 0) Console.Write(a +"xx");
  242.             if (b > 0 && a == 0) Console.Write(b+"x");
  243.             else if (b > 0) Console.Write(" +"+ b+"x");
  244.             else if (b < 0) Console.Write(b+"x");
  245.             if (c > 0) Console.Write(" +"+ c);
  246.             else if (c < 0) Console.Write(c);
  247.             if (d > 0) Console.Write(" +"+ d+"i");
  248.             else if (d < 0) Console.Write(d+"i");
  249.             Console.Write("\n");
  250.         }
  251.         public rownanie() {
  252.             delta = new Program.lzespolona();
  253.             Console.Write("Podaj A:");
  254.             a = Convert.ToInt32(Console.ReadLine());
  255.             Console.Write("Podaj B:");
  256.             b = Convert.ToInt32(Console.ReadLine());
  257.             Console.Write("Podaj C:");
  258.             c = Convert.ToInt32(Console.ReadLine());
  259.             Console.Write("Podaj D:");
  260.             d = Convert.ToInt32(Console.ReadLine());
  261.             if (a != 0 && d == 0) {
  262.  
  263.                 Rownanie = new AB();
  264.             }
  265.             else if (a == 0 && b != 0 & d == 0) {
  266.                 Rownanie = new B();
  267.             }
  268.             else if (a == 0 && b != 0 & d != 0) {
  269.                 Rownanie = new BD();
  270.             }
  271.             else if (a == 0 && b == 0 && (c != 0 || d != 0)) Console.Write("rownanie sprzeczne");
  272.             else if (a == 0 && b == 0 && c == 0 && d == 0) Console.Write("rownanie tozsamosciowe");
  273.             else if (a != 0 && d != 0) {
  274.                 Rownanie = new AD();
  275.             }
  276.  
  277.         }
  278.         public void wyswietl() {
  279.             if ((a == 0 && b == 0 && (c != 0 || d != 0))==false && (a == 0 && b == 0 && c == 0 && d == 0)==false)
  280.             {
  281.                 delta.cz_rz = Rownanie.oblicz_deltar(a, b, c, d);
  282.                 delta.cz_ur = Rownanie.oblicz_deltau(a, b, c, d);
  283.                 Rownanie.oblicz_pierwiastek(a, b, c, d, delta);
  284.                 Rownanie.dodaj(delta);
  285.                 Rownanie.odejmij(delta);
  286.                 Rownanie.pomnoz(delta);
  287.                 Rownanie.wyswietl(delta);
  288.             }
  289.         }
  290.         ~rownanie() {
  291.            
  292.         }
  293.  
  294.     };
  295.        
  296.     class Program
  297.     {
  298.         public struct lzespolona
  299.         {
  300.             public float cz_rz;
  301.             public float cz_ur;
  302.         };
  303.         public static void format_lzesp(lzespolona liczba)
  304.         {
  305.             if (liczba.cz_rz != 0) Console.Write(liczba.cz_rz);
  306.             if (liczba.cz_ur > 0 && liczba.cz_rz != 0) Console.Write(" +" + liczba.cz_ur);
  307.             else if (liczba.cz_ur > 0 && liczba.cz_rz == 0) Console.Write(liczba.cz_ur);
  308.             else if (liczba.cz_ur < 0) Console.Write(liczba.cz_ur);
  309.             Console.WriteLine();
  310.         }
  311.         static void Main(string[] args)
  312.         {
  313.             {
  314.                 rownanie ROWNANIE = new rownanie();
  315.                 ROWNANIE.formatuj();
  316.                 ROWNANIE.wyswietl();
  317.             }
  318.             Console.ReadLine();
  319.             Console.ReadLine();
  320.         }
  321.     }
  322.    
  323. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement