Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace ConsoleApp3
- {
- interface IA
- {
- float oblicz_deltar(int a, int b, int c, int d);
- float oblicz_deltau(int a, int b, int c, int d);
- void oblicz_pdeltar(int a, int b, int c, int d, Program.lzespolona delta);
- void oblicz_pdeltau(int a, int b, int c, int d, Program.lzespolona delta);
- void dodaj(Program.lzespolona delta);
- void odejmij(Program.lzespolona delta);
- void pomnoz(Program.lzespolona delta);
- void wyswietl(Program.lzespolona delta);
- void oblicz_pierwiastek(int a, int b, int c, int d, Program.lzespolona delta);
- }
- class B:IA {
- protected Program.lzespolona x1;
- virtual public float oblicz_deltar(int a, int b, int c, int d) { return 0.0f; }
- virtual public float oblicz_deltau(int a, int b, int c, int d) { return 0.0f; }
- virtual public void oblicz_pdeltar(int a, int b, int c, int d, Program.lzespolona delta) { }
- virtual public void oblicz_pdeltau(int a, int b, int c, int d, Program.lzespolona delta) { }
- virtual public void dodaj(Program.lzespolona delta) { }
- virtual public void odejmij(Program.lzespolona delta) { }
- virtual public void pomnoz(Program.lzespolona delta) { }
- virtual public void wyswietl(Program.lzespolona delta) {
- Console.Write("x1 = ");
- Program.format_lzesp(x1);
- }
- virtual public void oblicz_pierwiastek(int a, int b, int c, int d, Program.lzespolona delta) {
- this.x1.cz_rz = (-1.0f * c) / b;
- }
- public B() {
- x1 = new Program.lzespolona();
- x1.cz_rz = 0;
- x1.cz_ur = 0;
- }
- };
- class BD : B {
- public BD():base(){ }
- new virtual public void oblicz_pierwiastek(int a, int b, int c, int d, Program.lzespolona delta) {
- this.x1.cz_rz = (-1.0f * c) / b;
- this.x1.cz_ur = (-1.0f * d) / b;
- }
- };
- class AB : B {
- protected Program.lzespolona il;
- protected Program.lzespolona s;
- protected Program.lzespolona r;
- protected Program.lzespolona pdelta;
- protected Program.lzespolona x2;
- public AB():base() {
- il = new Program.lzespolona();
- s = new Program.lzespolona();
- r = new Program.lzespolona();
- pdelta = new Program.lzespolona();
- x2 = new Program.lzespolona();
- x1.cz_rz = 0;
- x1.cz_ur = 0;
- x2.cz_rz = 0;
- x2.cz_ur = 0;
- il.cz_rz = 0;
- il.cz_ur = 0;
- s.cz_rz = 0;
- s.cz_ur = 0;
- r.cz_rz = 0;
- r.cz_ur = 0;
- }
- new virtual public void wyswietl(Program.lzespolona delta) {
- Console.Write("delta = ");
- Program.format_lzesp(delta);
- if (delta.cz_rz > 0) {
- Console.Write("pdelta = ");
- Program.format_lzesp(pdelta);
- }
- Console.Write("x1 = ");
- Program.format_lzesp(x1);
- if (delta.cz_rz != 0) {
- Console.Write("x2 = ");
- Program.format_lzesp(x2);
- Console.Write("iloraz = ");
- Program.format_lzesp(il);
- Console.Write("suma = ");
- Program.format_lzesp(s);
- Console.Write("roznica = ");
- Program.format_lzesp(r);
- }
- }
- new virtual public float oblicz_deltar(int a, int b, int c, int d) {
- return ((float)b*(float)b) - 4.0f * a*c;
- }
- new virtual public float oblicz_deltau(int a, int b, int c, int d) {
- return 0.0f;
- }
- new virtual public void oblicz_pdeltar(int a, int b, int c, int d, Program.lzespolona delta) {
- this.pdelta.cz_rz = (float)Math.Sqrt(delta.cz_rz);
- }
- new virtual public void oblicz_pdeltau(int a, int b, int c, int d, Program.lzespolona delta) {
- this.pdelta.cz_ur=0;
- }
- new virtual public void dodaj(Program.lzespolona delta) {
- if (delta.cz_ur == 0 && delta.cz_rz > 0) {
- s.cz_rz = x1.cz_rz + x2.cz_rz;
- }
- else if (delta.cz_ur == 0 && delta.cz_rz < 0) {
- s.cz_rz = x1.cz_rz + x2.cz_rz;
- s.cz_ur = x1.cz_ur + x2.cz_ur;
- }
- }
- new virtual public void odejmij(Program.lzespolona delta) {
- if (delta.cz_ur == 0 && delta.cz_rz > 0) {
- r.cz_rz = x1.cz_rz - x2.cz_rz;
- }
- else if (delta.cz_ur == 0 && delta.cz_rz < 0) {
- r.cz_rz = x1.cz_rz - x2.cz_rz;
- r.cz_ur = x1.cz_ur - x2.cz_ur;
- }
- }
- new virtual public void pomnoz(Program.lzespolona delta) {
- if (delta.cz_ur == 0 && delta.cz_rz > 0) {
- il.cz_rz = x1.cz_rz * x2.cz_rz;
- }
- else if (delta.cz_ur == 0 && delta.cz_rz < 0) {
- il.cz_rz = (x1.cz_rz * x2.cz_rz) - (x1.cz_ur * x1.cz_ur);
- il.cz_ur = (x1.cz_rz * x2.cz_ur) - (x1.cz_ur * x1.cz_rz);
- }
- }
- new virtual public void oblicz_pierwiastek(int a, int b, int c, int d, Program.lzespolona delta) {
- if (delta.cz_rz> 0) {
- oblicz_pdeltar(a, b, c, d, delta);
- x1.cz_rz = -1.0f*(-1.0f*b - pdelta.cz_rz) / (2.0f * a);
- x2.cz_rz = -1.0f*(-1.0f*b + pdelta.cz_rz) / (2.0f * a);
- }
- else if (delta.cz_rz == 0) {
- x1.cz_rz = ((-1.0f *b / (2.0f * a)));
- }
- else if (delta.cz_rz< 0) {
- x1.cz_rz = ((-1.0f *b / (2.0f * a)));
- x1.cz_ur = -1.0f * (((float)Math.Sqrt((float)Math.Abs(delta.cz_rz)) / (2.0f * a)));
- x2.cz_rz = x1.cz_rz;
- x2.cz_ur = -1.0f * x1.cz_ur;
- }
- }
- };
- class AD : AB {
- private Program.lzespolona x3, x4;
- public AD():base(){
- x3 = new Program.lzespolona();
- x4 = new Program.lzespolona();
- x1.cz_rz = 0;
- x1.cz_ur = 0;
- x2.cz_rz = 0;
- x2.cz_ur = 0;
- il.cz_rz = 0;
- il.cz_ur = 0;
- s.cz_rz = 0;
- s.cz_ur = 0;
- r.cz_rz = 0;
- r.cz_ur = 0;
- x3.cz_rz = 0;
- x3.cz_ur = 0;
- x4.cz_rz = 0;
- x4.cz_ur = 0;
- }
- override public float oblicz_deltar(int a, int b, int c, int d) {
- return (1.0f*b*b) - 4.0f * a*c;
- }
- override public float oblicz_deltau(int a, int b, int c, int d) {
- return (-4.0f * a*d);
- }
- override public void oblicz_pdeltar(int a, int b, int c, int d, Program.lzespolona delta) {
- 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))));
- }
- override public void oblicz_pdeltau(int a, int b, int c, int d, Program.lzespolona delta) {
- 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);
- }
- override public void wyswietl(Program.lzespolona delta) {
- Console.Write("delta = ");
- Program.format_lzesp(delta);
- Console.Write("pdelta = ");
- Program.format_lzesp(pdelta);
- Console.Write("x1 = ");
- Program.format_lzesp(x1);
- Console.Write("x2 = ");
- Program.format_lzesp(x2);
- Console.Write("x3 = ");
- Program.format_lzesp(x3);
- Console.Write("x4 = ");
- Program.format_lzesp(x4);
- Console.Write("iloraz = ");
- Program.format_lzesp(il);
- Console.Write("suma = ");
- Program.format_lzesp(s);
- Console.Write("roznica = ");
- Program.format_lzesp(r);
- }
- override public void dodaj(Program.lzespolona delta) {
- s.cz_rz = x1.cz_rz + x2.cz_rz + x3.cz_rz + x4.cz_rz;
- s.cz_ur = x1.cz_ur + x2.cz_ur + x3.cz_ur + x4.cz_ur;
- }
- override public void odejmij(Program.lzespolona delta) {
- r.cz_rz = x1.cz_rz - x2.cz_rz - x3.cz_rz - x4.cz_rz;
- r.cz_ur = x1.cz_ur - x2.cz_ur - x3.cz_ur - x4.cz_ur;
- }
- override public void pomnoz(Program.lzespolona delta) {
- 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);
- 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);
- }
- override public void oblicz_pierwiastek(int a, int b, int c, int d, Program.lzespolona delta) {
- oblicz_pdeltar(a, b, c, d, delta);
- oblicz_pdeltau(a, b, c, d, delta);
- x1.cz_rz = (((-1.0f*b) - pdelta.cz_rz) / (2.0f * a));
- x2.cz_rz = x1.cz_rz;
- x1.cz_ur = (((-1.0f*b) - pdelta.cz_ur) / (2.0f * a));
- x2.cz_ur = -(x1.cz_ur);
- x3.cz_rz = (((-1.0f*b) + pdelta.cz_rz) / (2.0f * a));
- x4.cz_rz = x3.cz_rz;
- x3.cz_ur = (((-1.0f*b) + pdelta.cz_ur) / (2.0f * a));
- x4.cz_ur = -(x3.cz_ur);
- }
- };
- class rownanie {
- private int a, b, c, d;
- private Program.lzespolona delta;
- private IA Rownanie;
- public void formatuj() {
- if (a != 0) Console.Write(a +"xx");
- if (b > 0 && a == 0) Console.Write(b+"x");
- else if (b > 0) Console.Write(" +"+ b+"x");
- else if (b < 0) Console.Write(b+"x");
- if (c > 0) Console.Write(" +"+ c);
- else if (c < 0) Console.Write(c);
- if (d > 0) Console.Write(" +"+ d+"i");
- else if (d < 0) Console.Write(d+"i");
- Console.Write("\n");
- }
- public rownanie() {
- delta = new Program.lzespolona();
- Console.Write("Podaj A:");
- a = Convert.ToInt32(Console.ReadLine());
- Console.Write("Podaj B:");
- b = Convert.ToInt32(Console.ReadLine());
- Console.Write("Podaj C:");
- c = Convert.ToInt32(Console.ReadLine());
- Console.Write("Podaj D:");
- d = Convert.ToInt32(Console.ReadLine());
- if (a != 0 && d == 0) {
- Rownanie = new AB();
- }
- else if (a == 0 && b != 0 & d == 0) {
- Rownanie = new B();
- }
- else if (a == 0 && b != 0 & d != 0) {
- Rownanie = new BD();
- }
- else if (a == 0 && b == 0 && (c != 0 || d != 0)) Console.Write("rownanie sprzeczne");
- else if (a == 0 && b == 0 && c == 0 && d == 0) Console.Write("rownanie tozsamosciowe");
- else if (a != 0 && d != 0) {
- Rownanie = new AD();
- }
- }
- public void wyswietl() {
- if ((a == 0 && b == 0 && (c != 0 || d != 0))==false && (a == 0 && b == 0 && c == 0 && d == 0)==false)
- {
- delta.cz_rz = Rownanie.oblicz_deltar(a, b, c, d);
- delta.cz_ur = Rownanie.oblicz_deltau(a, b, c, d);
- Rownanie.oblicz_pierwiastek(a, b, c, d, delta);
- Rownanie.dodaj(delta);
- Rownanie.odejmij(delta);
- Rownanie.pomnoz(delta);
- Rownanie.wyswietl(delta);
- }
- }
- ~rownanie() {
- }
- };
- class Program
- {
- public struct lzespolona
- {
- public float cz_rz;
- public float cz_ur;
- };
- public static void format_lzesp(lzespolona liczba)
- {
- if (liczba.cz_rz != 0) Console.Write(liczba.cz_rz);
- if (liczba.cz_ur > 0 && liczba.cz_rz != 0) Console.Write(" +" + liczba.cz_ur);
- else if (liczba.cz_ur > 0 && liczba.cz_rz == 0) Console.Write(liczba.cz_ur);
- else if (liczba.cz_ur < 0) Console.Write(liczba.cz_ur);
- Console.WriteLine();
- }
- static void Main(string[] args)
- {
- {
- rownanie ROWNANIE = new rownanie();
- ROWNANIE.formatuj();
- ROWNANIE.wyswietl();
- }
- Console.ReadLine();
- Console.ReadLine();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement