Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // paradygmat4.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- #include <iostream>
- #include <vector>
- #include <complex>
- using namespace std;
- class Zmienne
- {
- protected:
- vector <int> tab; //tab[0]=a, tab[1]=b ...
- vector <complex<float>> com;
- public:
- void podaj_dane()
- {
- cout << "Podaj kolejno a, b, c, d\n";
- for (int i = 0; i < 4; i++)
- {
- int x;
- cin >> x;
- tab.push_back(x);
- }
- };
- void formatuj_równanie()
- {
- if (!tab.empty())
- {
- if (tab[0] == 0);
- else printf("%dxx", tab[0]);
- if (tab[1] < 0) printf("%dx", tab[1]);
- else if (tab[1] == 0);
- else printf("+%dx", tab[1]);
- if (tab[2] < 0) printf("%d", tab[2]);
- else if (tab[2] == 0);
- else printf("+%d", tab[2]);
- if (tab[3] < 0) printf("%di", tab[3]);
- else if (tab[3] == 0) printf("\n");
- else printf("+%di\n", tab[3]);
- }
- }
- };
- class Delta : public Zmienne
- {
- public:
- float oblicz_d_r()
- {
- com.push_back(complex<float>((tab[1] * tab[1]) - (4 * tab[0] * tab[2]), 0));
- cout << com.size() << endl;
- return (tab[1] * tab[1]) - (4 * tab[0] * tab[2]);
- }
- float oblicz_d_u()
- {
- com[0] = com[0] + complex<float>(0, (-4 * tab[0] * tab[3]));
- cout << com.size() << endl;
- return (-4 * tab[0] * tab[3]);
- }
- complex<float> oblicz_p_d_ru()
- {
- com.push_back(sqrt(com[0]));
- return sqrt(com[0]);
- }
- float oblicz_p_d_r(float delta_r, float delta_u)
- {
- delta_r = delta_r * delta_r + delta_u * delta_u;
- delta_r = sqrt(delta_r);
- delta_r = (delta_r + delta_r) / 2;
- delta_r = sqrt(delta_r);
- com.push_back(complex<float>(delta_r, 0)); //com[1]
- cout << com.size() << endl;
- //cout << com[1].real()<<endl;
- return delta_r;
- }
- float oblicz_p_d_u(float delta_r, float delta_u)
- {
- delta_u = delta_r * delta_r + delta_u * delta_u;
- delta_u = sqrt(delta_u);
- delta_u = (delta_u - delta_r) / 2;
- delta_u = sqrt(delta_u);
- com[1] = com[1] + complex<float>(0, delta_u);
- //cout << com[1].imag();
- cout << com.size();
- return delta_u;
- }
- };
- class Rownanie : public Delta
- {
- public:
- void oblicz_rnie()
- {
- if (tab[3] == 0 && tab[0] != 0)
- {
- if (com[0].real()>0)
- {
- com.push_back(complex<float>((-1.0*tab[1] - com[1].real()) / (2 * 1.0*tab[0]), 0)); //com[2]
- com.push_back(complex<float>((-1.0*tab[1] + com[1].real()) / (2 * 1.0*tab[0]), 0)); //com[3]
- //com[2].real((-1.0*tab[1] - oblicz_p_d_r(oblicz_d_r(), oblicz_d_u())) / (2 * 1.0*tab[0]));
- //com[3].real((-1.0*tab[1] + oblicz_p_d_r(oblicz_d_r(), oblicz_d_u())) / (2 * 1.0*tab[0]));
- return;
- }
- else if (com[0].real() == 0)
- {
- com.push_back(complex<float>((-1.0*tab[1] / (2 * 1.0*tab[0])), 0)); //com[2]
- return;
- }
- else if (com[0].real()<0)
- {
- com.push_back(complex<float>((-1.0*tab[1] / (2 * tab[0] * 1.0)), (-1.0*(com[1].real()) / (2 * tab[0] * 1.0)))); //com[2];
- com.push_back(complex<float>(com[2].real(), -com[2].imag())); //com[3]
- //com[2].real(-1.0*tab[1] / (2 * tab[0] *1.0));
- //com[2].imag(-1.0*(oblicz_p_d_r(fabs(oblicz_d_r()), oblicz_d_u())) / (2 * tab[0] *1.0));
- //com[3].real(com[2].real());
- //com[3].imag(-com[2].imag());
- return;
- }
- }
- if (tab[0] == 0 && tab[1] != 0 && tab[3] == 0)
- {
- com.push_back(complex<float>(0, 0)); //com[2]
- com.push_back(complex<float>(tab[2], 0));//com[3]
- com.push_back(complex<float>(tab[1], 0));//com[4]
- com[2] = com[2] + complex<float>((com[3].real()*-1.0) / com[4].real(), 0);
- return;
- }
- if (tab[0] == 0 && tab[1] == 0 && (tab[2] != 0 || tab[3] != 0))
- {
- return;
- }
- if (tab[0] == 0 && tab[1] == 0 && tab[2] == 0 && tab[3] == 0)
- {
- return;
- }
- if (tab[0] == 0 && tab[1] != 0 && tab[3] != 0)
- {
- com.push_back(complex<float>(0, 0)); //com[2]
- com.push_back(complex<float>(tab[2], 0)); //com[3]
- com.push_back(complex<float>(tab[1], 0)); //com[4]
- com.push_back(complex<float>(tab[3], 0)); //com[5]
- com[2] = com[2] + complex<float>((-com[3].real()) / com[4].real(), (-com[5].real()) / com[4].real());
- //com[2].real((-com[3].real()) / com[4].real());
- //com[2].imag((-com[5].real()) / com[4].real());
- return;
- }
- if (tab[0] != 0 && tab[3] != 0)
- {
- com.push_back(complex<float>(((-tab[1] - sqrt((sqrt(com[0].real()*com[0].real() + com[0].imag()*com[0].imag()) + com[0].real()) / 2)) / (2 * tab[0])), ((-sqrt((sqrt(com[0].real()*com[0].real() + com[0].imag()*com[0].imag()) - com[0].real()) / 2)) / (2 * tab[0]))));
- //com[2].real((-tab[1] - sqrt((sqrt(com[0].real()*com[0].real() + com[0].imag()*com[0].imag()) + com[0].real()) / 2)) / (2 * tab[0]));
- //com[2].imag((-sqrt((sqrt(oblicz_d_r()*oblicz_d_r() + oblicz_d_u()*oblicz_d_u()) - oblicz_d_r()) / 2)) / (2 * tab[0]));
- com.push_back(complex<float>(((-tab[1] - sqrt((sqrt(com[0].real()*com[0].real() + com[0].imag()*com[0].imag()) + com[0].real()) / 2)) / (2 * tab[0])), (sqrt((sqrt(com[0].real()*com[0].real() + com[0].imag()*com[0].imag()) - com[0].real()) / 2)) / (2 * tab[0])));
- //com[3].real((-tab[1] - sqrt((sqrt(oblicz_d_r()*oblicz_d_r() + oblicz_d_u()*oblicz_d_u()) + oblicz_d_r()) / 2)) / (2 * tab[0]));
- //com[3].imag((sqrt((sqrt(oblicz_d_r()*oblicz_d_r() + oblicz_d_u()*oblicz_d_u()) - oblicz_d_r()) / 2)) / (2 * tab[0]));
- com.push_back(complex<float>((-tab[1] + sqrt((sqrt(com[0].real()*com[0].real() + com[0].imag()*com[0].imag()) + com[0].real()) / 2)) / (2 * tab[0]), (sqrt((sqrt(com[0].real()*com[0].real() + com[0].imag()*com[0].imag()) - com[0].real()) / 2)) / (2 * tab[0])));
- //com[4].real((-tab[1] + sqrt((sqrt(oblicz_d_r()*oblicz_d_r() + oblicz_d_u()*oblicz_d_u()) + oblicz_d_r()) / 2)) / (2 * tab[0]));
- //com[4].imag((sqrt((sqrt(oblicz_d_r()*oblicz_d_r() + oblicz_d_u()*oblicz_d_u()) - oblicz_d_r()) / 2)) / (2 * tab[0]));
- com.push_back(complex<float>((-tab[1] + sqrt((sqrt(com[0].real()*com[0].real() + com[0].imag()*com[0].imag()) + com[0].real()) / 2)) / (2 * tab[0]), (-sqrt((sqrt(com[0].real()*com[0].real() + com[0].imag()*com[0].imag()) - com[0].real()) / 2)) / (2 * tab[0])));
- //com[5].real((-tab[1] + sqrt((sqrt(oblicz_d_r()*oblicz_d_r() + oblicz_d_u()*oblicz_d_u()) + oblicz_d_r()) / 2)) / (2 * tab[0]));
- //com[5].imag((-sqrt((sqrt(oblicz_d_r()*oblicz_d_r() + oblicz_d_u()*oblicz_d_u()) - oblicz_d_r()) / 2)) / (2 * tab[0]));
- return;
- }
- }
- void dodaj()
- {
- if (com[0].real()>0 && com[0].imag() == 0)
- {
- com.push_back(com[2] + com[3]);
- }
- else if ((com[0].real() < 0 || com[0].imag() != 0) && tab[3] == 0)
- {
- com.push_back(com[2] + com[3]);
- }
- else if (com[0].real()<0 || com[0].imag() != 0)
- {
- com.push_back(com[2] + com[3] + com[4] + com[5]);
- //com[com.size()].real((com[2].real())+(com[3].real())+(com[4].real())+(com[5].real()));
- //com[com.size()].imag((com[2].imag())+(com[3].imag())+(com[4].imag())+(com[5].imag()));
- }
- }
- void odejmij()
- {
- if (com[0].real()>0 && com[0].imag() == 0)
- {
- com.push_back(com[2] - com[3]);
- //com[7].real((com[2].real())-(com[3].real()));
- }
- else if ((com[0].real() < 0 || com[0].imag() != 0) && tab[3] == 0)
- {
- com.push_back(com[2] - com[3]);
- }
- else if (com[0].real()<0 || com[0].imag() != 0)
- {
- com.push_back(com[2] - com[3] - com[4] - com[5]);
- //com[7].real(com[2].real() - com[3].real() - com[4].real() - com[5].real());
- //com[7].imag(com[2].imag() - com[3].imag() - com[4].imag() - com[5].imag());
- }
- }
- void pomnoz()
- {
- if (com[0].real()>0 && com[0].imag() == 0)
- {
- com.push_back(complex<float>((com[2].real()*com[3].real()), 0));
- }
- else if (com[0].real() < 0 && com[4].real() == 0)
- {
- com.push_back(complex<float>((com[2].real())*(com[3].real()) - com[2].imag()*com[3].imag(), com[2].real()*com[3].imag() + com[3].real()*com[2].imag()));
- //com[8].real((com[2].real())*(com[3].real())- com[2].imag()*com[3].imag());
- //com[8].imag(com[2].real()*com[3].imag() + com[3].real()*com[2].imag());
- }
- else if (com[0].real()<0)
- {
- com.push_back(complex<float>((com[2].real())*(com[3].real()*(com[4].real())*(com[5].real())), com[2].imag()*com[3].imag()*com[4].imag()*com[5].imag()));
- //com[8].real((com[2].real())*(com[3].real()*(com[4].real())*(com[5].real())));
- //com[8].imag(com[2].imag()*com[3].imag()*com[4].imag()*com[5].imag());
- }
- else if (com[0].imag() != 0)
- {
- int x = (com[2].real()*com[3].real() - com[2].imag()*com[3].imag())*(com[4].real() *com[5].real() - com[4].imag()*com[5].imag()) - (com[2].real()*com[3].imag() + com[3].real()*com[2].imag())*(com[4].real()*com[5].real() + com[5].imag()*com[4].imag());
- int y = (com[2].real()*com[3].real() - com[2].imag()*com[3].imag())*(com[4].real()*com[5].real() + com[4].imag()*com[5].imag()) + (com[4].real()*com[5].real() - com[4].imag()*com[5].imag())*(com[2].real()*com[3].imag() + com[3].real()*com[2].imag());
- com.push_back(complex<float>(x, y));
- //com[8].real((com[2].real()*com[3].real() - com[2].imag()*com[3].imag())*(com[4].real() *com[5].real() - com[4].imag()*com[5].imag()) - (com[2].real()*com[3].imag() + com[3].real()*com[2].imag())*(com[4].real()*com[5].real() + com[5].imag()*com[4].imag()));
- //com[8].imag((com[2].real()*com[3].real() - com[2].imag()*com[3].imag())*(com[4].real()*com[5].real() + com[4].imag()*com[5].imag()) + (com[4].real()*com[5].real() - com[4].imag()*com[5].imag())*(com[2].real()*com[3].imag() + com[3].real()*com[2].imag()));
- }
- }
- void wyswietl_wynik()
- {
- int end = com.size() - 1;
- cout << "Wyswietlam wyniki z funkcji w klasie Rownanie" << endl;
- if (tab.at(3) == 0 && tab.at(0) != 0)
- {
- if (com[0].real()>0)
- {
- printf("x1r = %f\nx2r = %f", com[2].real(), com[3].real());
- printf("\nsr = %f\n", com[end - 2].real());
- printf("\nrr = %f\n", com[end - 1].real());
- printf("\nilr = %f\n", com[end].real());
- return;
- }
- else if (com[0].real() == 0)
- {
- printf("x1r = %f", com[2].real());
- return;
- }
- else if (com[0].real()<0)
- {
- printf("x1r = %f\nx2r = %f\n", com[2].real(), com[3].real());
- printf("x1u = %f\nx2u = %f\n", com[2].imag(), com[3].imag());
- printf("\nsu = %f\n", com[end - 2].imag());
- printf("\nsr = %f\n", com[end - 2].real());
- printf("\nru = %f\n", com[end - 1].imag());
- printf("\nrr = %f\n", com[end - 1].real());
- printf("\nilr = %f\n", com[end].real());
- printf("\nilu = %f\n", com[end].imag());
- return;
- }
- }
- if (tab[0] == 0 && tab[1] != 0 && tab[2] == 0)
- {
- printf("x1r = %f\n", com[2].real());
- return;
- }
- if (tab[0] == 0 && tab[1] == 0 && (tab[2] != 0 || tab[3] != 0))
- {
- printf("Rownanie sprzeczne");
- }
- if (tab[0] == 0 && tab[1] == 0 && tab[2] == 0 && tab[3] == 0)
- {
- printf("Rownanie tozsamosciowe");
- }
- if (tab[0] == 0 && tab[1] != 0 && tab[3] != 0)
- {
- printf("x1r = %f\n x1u = %f\n", com[2].real(), com[2].imag());
- return;
- }
- if (tab[0] != 0 && tab[3] != 0)
- {
- printf("x1r = %f\nx1u = %f\n", com[2].real(), com[2].imag());
- printf("x2r = %f\nx2u = %f\n", com[3].real(), com[3].imag());
- printf("x3r = %f\nx3u = %f\n", com[4].real(), com[4].imag());
- printf("x4r = %f\nx4u = %f\n", com[5].real(), com[5].imag());
- printf("\nsu = %f\n", com[end - 2].imag());
- printf("\nsr = %f\n", com[end - 2].real());
- printf("\nru = %f\n", com[end - 1].imag());
- printf("\nrr = %f\n", com[end - 1].real());
- printf("\nilr = %f\n", com[end].real());
- printf("\nilu = %f\n", com[end].imag());
- return;
- }
- }
- };
- class Liczba_zesp : public Rownanie
- {
- public:
- void wyswietl_wynik()
- {
- int end = com.size() - 1;
- cout << "Wyswietlam wyniki z funkcji w klasie Rownanie" << endl;
- if (tab.at(3) == 0 && tab.at(0) != 0)
- {
- if (com[0].real()>0)
- {
- printf("x1r = %f\nx2r = %f", com[2].real(), com[3].real());
- printf("\nsr = %f\n", com[end - 2].real());
- printf("\nrr = %f\n", com[end - 1].real());
- printf("\nilr = %f\n", com[end].real());
- return;
- }
- else if (com[0].real() == 0)
- {
- printf("x1r = %f", com[2].real());
- return;
- }
- else if (com[0].real()<0)
- {
- printf("x1r = %f\nx2r = %f\n", com[2].real(), com[3].real());
- printf("x1u = %f\nx2u = %f\n", com[2].imag(), com[3].imag());
- printf("\nsu = %f\n", com[end - 2].imag());
- printf("\nsr = %f\n", com[end - 2].real());
- printf("\nru = %f\n", com[end - 1].imag());
- printf("\nrr = %f\n", com[end - 1].real());
- printf("\nilr = %f\n", com[end].real());
- printf("\nilu = %f\n", com[end].imag());
- return;
- }
- }
- if (tab[0] == 0 && tab[1] != 0 && tab[3] == 0)
- {
- printf("x1r = %f\n", com[2].real());
- return;
- }
- if (tab[0] == 0 && tab[1] == 0 && (tab[2] != 0 || tab[3] != 0))
- {
- printf("Rownanie sprzeczne");
- }
- if (tab[0] == 0 && tab[1] == 0 && tab[2] == 0 && tab[3] == 0)
- {
- printf("Rownanie tozsamosciowe");
- }
- if (tab[0] == 0 && tab[1] != 0 && tab[3] != 0)
- {
- printf("x1r = %f\n x1u = %f\n", com[2].real(), com[2].imag());
- return;
- }
- if (tab[0] != 0 && tab[3] != 0)
- {
- printf("x1r = %f\nx1u = %f\n", com[2].real(), com[2].imag());
- printf("x2r = %f\nx2u = %f\n", com[3].real(), com[3].imag());
- printf("x3r = %f\nx3u = %f\n", com[4].real(), com[4].imag());
- printf("x4r = %f\nx4u = %f\n", com[5].real(), com[5].imag());
- printf("\nsu = %f\n", com[end - 2].imag());
- printf("\nsr = %f\n", com[end - 2].real());
- printf("\nru = %f\n", com[end - 1].imag());
- printf("\nrr = %f\n", com[end - 1].real());
- printf("\nilr = %f\n", com[end].real());
- printf("\nilu = %f\n", com[end].imag());
- return;
- }
- }
- };
- int main()
- {
- Liczba_zesp a;
- a.podaj_dane();
- a.formatuj_równanie();
- a.oblicz_d_r();
- a.oblicz_d_u();
- a.oblicz_p_d_ru();
- //--------------------------
- a.oblicz_rnie();
- a.dodaj();
- a.odejmij();
- a.pomnoz();
- a.wyswietl_wynik();
- getchar();
- getchar();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement