/* Program na vypocitanie rovnice o troch neznamych pomocou Sarrusovho pravidla o determinantoch... aspon myslim ze sa to tak nejako vola ;-) Spravu o chybach posielajte na moonware@inmail.sk, aj ked ja dufam ze tu ziadne nebudu, a ak aj budu, ze na ne pridem sam :-) */ // verzia 2.1 - moznost zadat do programu nulu // verzia 2.0.1 - oprava chyby s nezobrazovanim opacneho lomitka /* verzia 2.0 - upravenie napovedy - upravenie formatovania vystupu (setw()) - rozdelenie na viacere funkcie - uprava vzhladu - pridanie moznosti ulozit vysledok a postup riesenia do textoveho suboru */ /* // verzia 1.5.4.1 - vylepsenie skusky spravnosti // verzia 1.5.4 - pridanie skusky spravnosti (zadanie sk na otazku "Zelate si vypocitat dalsi priklad?") // verzia 1.5.3 - zmena helpu (z "vsetky styri" na "styri potrebne"); pridanie moznosti znova zadat predchadzajucu hodnotu // verzia 1.5.2.1 - oprava zobrazovania nasobenia - znak . sa plietol s desatinnou bodkou. odteraz nasobenie je * // verzia 1.5.2 - zmena z signed int na float a long double // verzia 1.5.1 - pridanie volby exit; po zadani zlej hodnoty program nezacina od zaciatku // verzia 1.5 - zmena pomenovania premennych z obycajnych na array (odstranenie constructora a destructora - uz nepotrebne) // verzia 1.4 - zmena zobrazovania postupu riesenia, pridanie helpu // zmena mena z rovnice_o_troch_neznamych na ro3n kvoli zjednoduseniu; prva verzia s tymto menom je 1.4 // verzia 1.3.1 - pridane "rovnica nema riesenie", teda zabranenie spadnutiu programu, ak D0 == 0 // verzia 1.3 - #define VERSION + postup + otazka na konci (zelate si vypocitat dalsi priklad?) // verzia 1.2 - oprava chyby s deklaraciou globalnych premennych // verzia 1.1 - zmena z int na signed int + pridanie destructora (a teda aj zmena vacsiny premennych na pointerov s pouzitim new a delete) */ #include #include #include #include #include #include #define VERSION 2.1; using namespace std; char ver[] = "2.1"; long double a [3][4]; char buffer [50]; char save_path [256]; int sirka (3); class cDeterminant { public: void postup (long double D0, long double D1, long double D2, long double D3) { // hlavny determinant --------------------------------------------------------------- cout << "\nPostup riesenia:\n" << endl; cout << " | " << setw(3) << a[0][0] << " " << setw(3) << a[0][1] << " " << setw(3) << a[0][2] << " |" << endl; cout << "D = | " << setw(3) << a[1][0] << " " << setw(3) << a[1][1] << " " << setw(3) << a[1][2] << " | = (" << (a[0][0] * a[1][1] * a[2][2]) << ") + (" << (a[1][0] * a[2][1] * a[0][2]) << ") + (" << (a[2][0] * a[0][1] * a[1][2]) << ") - (" << (a[2][0] * a[1][1] * a[0][2]) << ") - (" << (a[0][0] * a[2][1] * a[1][2]) << ") - (" << (a[1][0] * a[0][1] * a[2][2]) << ") = " << D0 << endl; cout << " | " << setw(3) << a[2][0] << " " << setw(3) << a[2][1] << " " << setw(3) << a[2][2] << " |\n" << endl; cout << "(D = " << a[0][0] << "*" << a[1][1] << "*" << a[2][2] << " + " << a[1][0] << "*" << a[2][1] << "*" << a[0][2] << " + " << a[2][0] << "*" << a[0][1] << "*" << a[1][2] << " - (" << a[2][0] << "*" << a[1][1] << "*" << a[0][2] << ") - (" << a[0][0] << "*" << a[2][1] << "*" << a[1][2] << ") - (" << a[1][0] << "*" << a[0][1] << "*" << a[2][2] << ") = " << D0 << ")\n" << endl; // determinant D1 ------------------------------------------------------------------- cout << " | " << setw(3) << a[0][3] << " " << setw(3) << a[0][1] << " " << setw(3) << a[0][2] << " |" << endl; cout << "D1 = | " << setw(3) << a[1][3] << " " << setw(3) << a[1][1] << " " << setw(3) << a[1][2] << " | = (" << (a[0][3] * a[1][1] * a[2][2]) << ") + (" << (a[1][3] * a[2][1] * a[0][2]) << ") + (" << (a[2][3] * a[0][1] * a[1][2]) << ") - (" << (a[2][3] * a[1][1] * a[0][2]) << ") - (" << (a[0][3] * a[2][1] * a[1][2]) << ") - (" << (a[1][3] * a[0][1] * a[2][2]) << ") = " << D1 << endl; cout << " | " << setw(3) << a[2][3] << " " << setw(3) << a[2][1] << " " << setw(3) << a[2][2] << " |\n" << endl; cout << "(D1 = " << a[0][3] << "*" << a[1][1] << "*" << a[2][2] << " + " << a[1][3] << "*" << a[2][1] << "*" << a[0][2] << " + " << a[2][3] << "*" << a[0][1] << "*" << a[1][2] << " - (" << a[2][3] << "*" << a[1][1] << "*" << a[0][2] << ") - (" << a[0][3] << "*" << a[2][1] << "*" << a[1][2] << ") - (" << a[1][3] << "*" << a[0][1] << "*" << a[2][2] << ") = " << D1 << ")\n" << endl; // determinant D2 ------------------------------------------------------------------- cout << " | " << setw(3) << a[0][0] << " " << setw(3) << a[0][3] << " " << setw(3) << a[0][2] << " |" << endl; cout << "D2 = | " << setw(3) << a[1][0] << " " << setw(3) << a[1][3] << " " << setw(3) << a[1][2] << " | = (" << (a[0][0] * a[1][3] * a[2][2]) << ") + (" << (a[1][0] * a[2][3] * a[0][2]) << ") + (" << (a[2][0] * a[0][3] * a[1][2]) << ") - (" << (a[2][0] * a[1][3] * a[0][2]) << ") - (" << (a[0][0] * a[2][3] * a[1][2]) << ") - (" << (a[1][0] * a[0][3] * a[2][2]) << ") = " << D2 << endl; cout << " | " << setw(3) << a[2][0] << " " << setw(3) << a[2][3] << " " << setw(3) << a[2][2] << " |\n" << endl; cout << "(D2 = " << a[0][0] << "*" << a[1][3] << "*" << a[2][2] << " + " << a[1][0] << "*" << a[2][3] << "*" << a[0][2] << " + " << a[2][0] << "*" << a[0][3] << "*" << a[1][2] << " - (" << a[2][0] << "*" << a[1][3] << "*" << a[0][2] << ") - (" << a[0][0] << "*" << a[2][3] << "*" << a[1][2] << ") - (" << a[1][0] << "*" << a[0][3] << "*" << a[2][2] << ") = " << D2 << ")\n" << endl; // determinant D3 ------------------------------------------------------------------- cout << " | " << setw(3) << a[0][0] << " " << setw(3) << a[0][1] << " " << setw(3) << a[0][3] << " |" << endl; cout << "D3 = | " << setw(3) << a[1][0] << " " << setw(3) << a[1][1] << " " << setw(3) << a[1][3] << " | = (" << (a[0][0] * a[1][1] * a[2][3]) << ") + (" << (a[1][0] * a[2][1] * a[0][3]) << ") + (" << (a[2][0] * a[0][1] * a[1][3]) << ") - (" << (a[2][0] * a[1][1] * a[0][3]) << ") - (" << (a[0][0] * a[2][1] * a[1][3]) << ") - (" << (a[1][0] * a[0][1] * a[2][3]) << ") = " << D3 << endl; cout << " | " << setw(3) << a[2][0] << " " << setw(3) << a[2][1] << " " << setw(3) << a[2][3] << " |\n" << endl; cout << "(D3 = " << a[0][0] << "*" << a[1][1] << "*" << a[2][3] << " + " << a[1][0] << "*" << a[2][1] << "*" << a[0][3] << " + " << a[2][0] << "*" << a[0][1] << "*" << a[1][3] << " - (" << a[2][0] << "*" << a[1][1] << "*" << a[0][3] << ") - (" << a[0][0] << "*" << a[2][1] << "*" << a[1][3] << ") - (" << a[1][0] << "*" << a[0][1] << "*" << a[2][3] << ") = " << D3 << ")\n" << endl;} long double vypocitajD () { return ((a[0][0] * a[1][1] * a[2][2]) + (a[1][0] * a[2][1] * a[0][2]) + (a[2][0] * a[0][1] * a[1][2]) - (a[2][0] * a[1][1] * a[0][2]) - (a[0][0] * a[2][1] * a[1][2]) - (a[1][0] * a[0][1] * a[2][2]));} long double vypocitajD1 () { return ((a[0][3] * a[1][1] * a[2][2]) + (a[1][3] * a[2][1] * a[0][2]) + (a[2][3] * a[0][1] * a[1][2]) - (a[2][3] * a[1][1] * a[0][2]) - (a[0][3] * a[2][1] * a[1][2]) - (a[1][3] * a[0][1] * a[2][2]));} long double vypocitajD2 () { return ((a[0][0] * a[1][3] * a[2][2]) + (a[1][0] * a[2][3] * a[0][2]) + (a[2][0] * a[0][3] * a[1][2]) - (a[2][0] * a[1][3] * a[0][2]) - (a[0][0] * a[2][3] * a[1][2]) - (a[1][0] * a[0][3] * a[2][2]));} long double vypocitajD3 () { return ((a[0][0] * a[1][1] * a[2][3]) + (a[1][0] * a[2][1] * a[0][3]) + (a[2][0] * a[0][1] * a[1][3]) - (a[2][0] * a[1][1] * a[0][3]) - (a[0][0] * a[2][1] * a[1][3]) - (a[1][0] * a[0][1] * a[2][3]));} }; void help () { // ------------------------------------------------------------------------------------------------ cout << endl; cout << "*****************************************************************************" << endl; cout << "* --------------------------Napoveda programu ro3n------------------------- *" << endl; cout << "* Predpokladajme, ze chceme vypocitat sustavu: *" << endl; cout << "* 5x - y + z = 4 *" << endl; cout << "* 2x + y - 3z = 8 *" << endl; cout << "* x - 2y + 5z = -7 *" << endl; cout << "* -------------------------1. krok - zadanie hodnot------------------------ *" << endl; cout << "* Postupne zadavame hodnoty premennych, kde: *" << endl; cout << "* a b c d e f g h *" << endl; cout << "* (5)x + (-1)y + (1)z = (4) (2)x + (1)y + (-3)z = (8) *" << endl; cout << "* i j k l *" << endl; cout << "* (1)x + (-2)y + (5)z = (-7) *" << endl; cout << "* teda: a = 5; b = -1; c = 1; d = 4 *" << endl; cout << "* e = 2; f = 1; g = -3; h = 8 *" << endl; cout << "* i = 1; j = -2; k = 5; l = -7 *" << endl; cout << "* Kazde zadane cislo odsuhlasime stlacenim klavesy enter (return). *" << endl; cout << "* Ak sa nahodou pomylime, napiseme prev a zadame hodnotu znova. *" << endl; cout << "* Po zadani vsetkych potrebnych hodnot pokracujeme stlacenim klavesy enter. *" << endl; cout << "* ---------------------------2. krok - vysledok---------------------------- *" << endl; cout << "* Po zadani vsetkych potrebnych informacii sa zobrazi najprv postup. *" << endl; cout << "* Su tu vypocitane styri potrebne determinanty. *" << endl; cout << "* Nizsie je zobrazeny vysledok - x, y, z. *" << endl; cout << "* Mame moznost ulozit riesenie do textoveho suboru. *" << endl; cout << "* Podla vyberu napiseme A alebo N a stlacime klavesu enter (return). *" << endl; cout << "* Ak sme zvolili moznost ulozit (A), napiseme meno suboru, pripadne cestu. *" << endl; cout << "* Potom mame moznost program ukoncit, alebo vypocitat dalsi priklad. *" << endl; cout << "* Podla vyberu napiseme A alebo N a stlacime klavesu enter (return). *" << endl; cout << "*****************************************************************************" << endl; // ------------------------------------------------------------------------------------------------ } void ro3n_menu () { // ------------------------------------------------------------------------------------------------ cout << "\n**************************************************************************" << endl; cout << "* ro3n verzia " << setw(5) << ver << " *" << endl; cout << "* ---------------------------------------------------------------------- *" << endl; cout << "* Priklad sustavy rovnic: *" << endl; cout << "* ax + by + cz = d *" << endl; cout << "* ex + fy + gz = h *" << endl; cout << "* ix + jy + kz = l *" << endl; cout << "* ---------------------------------------------------------------------- *" << endl; cout << "* Napiste help pre viac informacii. Napiste exit pre ukoncenie programu. *" << endl; cout << "* Ak sa pomylite a zadate zlu hodnotu, napiste prev a zadajte znova. *" << endl; cout << "**************************************************************************" << endl; // ------------------------------------------------------------------------------------------------ } int ro3n_input () { cout << "Zadajte: " << endl; // ------------------------------------------------------------------------------------------------ znova_a: cout << "a = "; cin.getline (buffer, 50); if ((buffer[0] == 'h') && (buffer[1] == 'e') && (buffer[2] == 'l') && (buffer[3] == 'p')) {help (); return 1;} else if ((buffer[0] == 'e') && (buffer[1] == 'x') && (buffer[2] == 'i') && (buffer[3] == 't')) {cout << "\nDovidenia!" << endl; return 0;} else {a[0][0] = atof (buffer); cout << "Zadali ste: " << a[0][0] << endl;} // ------------------------------------------------------------------------------------------------ znova_b: cout << "b = "; cin.getline (buffer, 50); if ((buffer[0] == 'h') && (buffer[1] == 'e') && (buffer[2] == 'l') && (buffer[3] == 'p')) {help (); return 1;} else if ((buffer[0] == 'e') && (buffer[1] == 'x') && (buffer[2] == 'i') && (buffer[3] == 't')) {cout << "\nDovidenia!" << endl; return 0;} else if ((buffer[0] == 'p') && (buffer[1] == 'r') && (buffer[2] == 'e') && (buffer[3] == 'v')) {goto znova_a;} else {a[0][1] = atof (buffer); cout << "Zadali ste: " << a[0][1] << endl;} // ------------------------------------------------------------------------------------------------ znova_c: cout << "c = "; cin.getline (buffer, 50); if ((buffer[0] == 'h') && (buffer[1] == 'e') && (buffer[2] == 'l') && (buffer[3] == 'p')) {help (); return 1;} else if ((buffer[0] == 'e') && (buffer[1] == 'x') && (buffer[2] == 'i') && (buffer[3] == 't')) {cout << "\nDovidenia!" << endl; return 0;} else if ((buffer[0] == 'p') && (buffer[1] == 'r') && (buffer[2] == 'e') && (buffer[3] == 'v')) {goto znova_b;} else {a[0][2] = atof (buffer); cout << "Zadali ste: " << a[0][2] << endl;} // ------------------------------------------------------------------------------------------------ znova_d: cout << "d = "; cin.getline (buffer, 50); if ((buffer[0] == 'h') && (buffer[1] == 'e') && (buffer[2] == 'l') && (buffer[3] == 'p')) {help (); return 1;} else if ((buffer[0] == 'e') && (buffer[1] == 'x') && (buffer[2] == 'i') && (buffer[3] == 't')) {cout << "\nDovidenia!" << endl; return 0;} else if ((buffer[0] == 'p') && (buffer[1] == 'r') && (buffer[2] == 'e') && (buffer[3] == 'v')) {goto znova_c;} else {a[0][3] = atof (buffer); cout << "Zadali ste: " << a[0][3] << endl;} // ------------------------------------------------------------------------------------------------ znova_e: cout << "e = "; cin.getline (buffer, 50); if ((buffer[0] == 'h') && (buffer[1] == 'e') && (buffer[2] == 'l') && (buffer[3] == 'p')) {help (); return 1;} else if ((buffer[0] == 'e') && (buffer[1] == 'x') && (buffer[2] == 'i') && (buffer[3] == 't')) {cout << "\nDovidenia!" << endl; return 0;} else if ((buffer[0] == 'p') && (buffer[1] == 'r') && (buffer[2] == 'e') && (buffer[3] == 'v')) {goto znova_d;} else {a[1][0] = atof (buffer); cout << "Zadali ste: " << a[1][0] << endl;} // ------------------------------------------------------------------------------------------------ znova_f: cout << "f = "; cin.getline (buffer, 50); if ((buffer[0] == 'h') && (buffer[1] == 'e') && (buffer[2] == 'l') && (buffer[3] == 'p')) {help (); return 1;} else if ((buffer[0] == 'e') && (buffer[1] == 'x') && (buffer[2] == 'i') && (buffer[3] == 't')) {cout << "\nDovidenia!" << endl; return 0;} else if ((buffer[0] == 'p') && (buffer[1] == 'r') && (buffer[2] == 'e') && (buffer[3] == 'v')) {goto znova_e;} else {a[1][1] = atof (buffer); cout << "Zadali ste: " << a[1][1] << endl;} // ------------------------------------------------------------------------------------------------ znova_g: cout << "g = "; cin.getline (buffer, 50); if ((buffer[0] == 'h') && (buffer[1] == 'e') && (buffer[2] == 'l') && (buffer[3] == 'p')) {help (); return 1;} else if ((buffer[0] == 'e') && (buffer[1] == 'x') && (buffer[2] == 'i') && (buffer[3] == 't')) {cout << "\nDovidenia!" << endl; return 0;} else if ((buffer[0] == 'p') && (buffer[1] == 'r') && (buffer[2] == 'e') && (buffer[3] == 'v')) {goto znova_f;} else {a[1][2] = atof (buffer); cout << "Zadali ste: " << a[1][2] << endl;} // ------------------------------------------------------------------------------------------------ znova_h: cout << "h = "; cin.getline (buffer, 50); if ((buffer[0] == 'h') && (buffer[1] == 'e') && (buffer[2] == 'l') && (buffer[3] == 'p')) {help (); return 1;} else if ((buffer[0] == 'e') && (buffer[1] == 'x') && (buffer[2] == 'i') && (buffer[3] == 't')) {cout << "\nDovidenia!" << endl; return 0;} else if ((buffer[0] == 'p') && (buffer[1] == 'r') && (buffer[2] == 'e') && (buffer[3] == 'v')) {goto znova_g;} else {a[1][3] = atof (buffer); cout << "Zadali ste: " << a[1][3] << endl;} // ------------------------------------------------------------------------------------------------ znova_i: cout << "i = "; cin.getline (buffer, 50); if ((buffer[0] == 'h') && (buffer[1] == 'e') && (buffer[2] == 'l') && (buffer[3] == 'p')) {help (); return 1;} else if ((buffer[0] == 'e') && (buffer[1] == 'x') && (buffer[2] == 'i') && (buffer[3] == 't')) {cout << "\nDovidenia!" << endl; return 0;} else if ((buffer[0] == 'p') && (buffer[1] == 'r') && (buffer[2] == 'e') && (buffer[3] == 'v')) {goto znova_h;} else {a[2][0] = atof (buffer); cout << "Zadali ste: " << a[2][0] << endl;} // ------------------------------------------------------------------------------------------------ znova_j: cout << "j = "; cin.getline (buffer, 50); if ((buffer[0] == 'h') && (buffer[1] == 'e') && (buffer[2] == 'l') && (buffer[3] == 'p')) {help (); return 1;} else if ((buffer[0] == 'e') && (buffer[1] == 'x') && (buffer[2] == 'i') && (buffer[3] == 't')) {cout << "\nDovidenia!" << endl; return 0;} else if ((buffer[0] == 'p') && (buffer[1] == 'r') && (buffer[2] == 'e') && (buffer[3] == 'v')) {goto znova_i;} else {a[2][1] = atof (buffer); cout << "Zadali ste: " << a[2][1] << endl;} // ------------------------------------------------------------------------------------------------ znova_k: cout << "k = "; cin.getline (buffer, 50); if ((buffer[0] == 'h') && (buffer[1] == 'e') && (buffer[2] == 'l') && (buffer[3] == 'p')) {help (); return 1;} else if ((buffer[0] == 'e') && (buffer[1] == 'x') && (buffer[2] == 'i') && (buffer[3] == 't')) {cout << "\nDovidenia!" << endl; return 0;} else if ((buffer[0] == 'p') && (buffer[1] == 'r') && (buffer[2] == 'e') && (buffer[3] == 'v')) {goto znova_j;} else {a[2][2] = atof (buffer); cout << "Zadali ste: " << a[2][2] << endl;} // ------------------------------------------------------------------------------------------------ znova_l: cout << "l = "; cin.getline (buffer, 50); if ((buffer[0] == 'h') && (buffer[1] == 'e') && (buffer[2] == 'l') && (buffer[3] == 'p')) {help (); return 1;} else if ((buffer[0] == 'e') && (buffer[1] == 'x') && (buffer[2] == 'i') && (buffer[3] == 't')) {cout << "\nDovidenia!" << endl; return 0;} else if ((buffer[0] == 'p') && (buffer[1] == 'r') && (buffer[2] == 'e') && (buffer[3] == 'v')) {goto znova_k;} else {a[2][3] = atof (buffer); cout << "Zadali ste: " << a[2][3] << endl;} // ------------------------------------------------------------------------------------------------ cout << "********************************************" << endl; cout << "* Moznosti: *" << endl; cout << "* klavesa enter - vypocitat zadany priklad *" << endl; cout << "* prev - znova zadat poslednu hodnotu *" << endl; cout << "* help - napoveda *" << endl; cout << "* exit - ukoncit program *" << endl; cout << "********************************************" << endl; cout << "> "; cin.getline (buffer, 50); if ((buffer[0] == 'h') && (buffer[1] == 'e') && (buffer[2] == 'l') && (buffer[3] == 'p')) {help (); return 1;} if ((buffer[0] == 'e') && (buffer[1] == 'x') && (buffer[2] == 'i') && (buffer[3] == 't')) {cout << "\nDovidenia!" << endl; return 0;} if ((buffer[0] == 'p') && (buffer[1] == 'r') && (buffer[2] == 'e') && (buffer[3] == 'v')) {goto znova_l;} // ------------------------------------------------------------------------------------------------ cout << endl; return 2; } int ro3n_output_save (long double D0, long double D1, long double D2, long double D3, long double x, long double y, long double z) { // ------------------------------------------------------------------------------------------------ cout << "\nUlozit riesenie do textoveho suboru? [A/N] "; cin.getline (buffer, 50); if ((buffer[0] == 'N') || (buffer[0] == 'n')) {return 0;} else if ((buffer[0] == 'A') || (buffer[0] == 'a')) { cout << "************************************************************************" << endl; cout << "* Zadajte meno suboru, pripadne kompletnu cestu. Napriklad: *" << endl; cout << "* Ak zadate: Subor priklad.txt bude umiestneny: *" << endl; cout << "* priklad.txt do aktualneho priecinka *" << endl; cout << "* C:\\priklad.txt na disk C: (Windows) *" << endl; cout << "* /home/uzivatel/priklad.txt do domovskeho priecinka (Linux) *" << endl; cout << "* /Users/uzivatel/priklad.txt do domovskeho priecinka (Mac OS X) *" << endl; cout << "************************************************************************" << endl; cout << "> "; cin.getline (save_path, 256); ofstream sfile (save_path); if (sfile.is_open()) { cout << "Subor uspesne vytvoreny." << endl; sfile << "------------------------------------ro3n------------------------------------" << endl; sfile << "\nPriklad:\n" << endl; sfile << a[0][0] << "x + " << a[0][1] << "y + " << a[0][2] << "z = " << a[0][3] << endl; sfile << a[1][0] << "x + " << a[1][1] << "y + " << a[1][2] << "z = " << a[1][3] << endl; sfile << a[2][0] << "x + " << a[2][1] << "y + " << a[2][2] << "z = " << a[2][3] << endl; // hlavny determinant --------------------------------------------------------------- sfile << "\nPostup riesenia:\n" << endl; sfile << " | " << setw(3) << a[0][0] << " " << setw(3) << a[0][1] << " " << setw(3) << a[0][2] << " |" << endl; sfile << "D = | " << setw(3) << a[1][0] << " " << setw(3) << a[1][1] << " " << setw(3) << a[1][2] << " | = (" << (a[0][0] * a[1][1] * a[2][2]) << ") + (" << (a[1][0] * a[2][1] * a[0][2]) << ") + (" << (a[2][0] * a[0][1] * a[1][2]) << ") - (" << (a[2][0] * a[1][1] * a[0][2]) << ") - (" << (a[0][0] * a[2][1] * a[1][2]) << ") - (" << (a[1][0] * a[0][1] * a[2][2]) << ") = " << D0 << endl; sfile << " | " << setw(3) << a[2][0] << " " << setw(3) << a[2][1] << " " << setw(3) << a[2][2] << " |\n" << endl; sfile << "(D = " << a[0][0] << "*" << a[1][1] << "*" << a[2][2] << " + " << a[1][0] << "*" << a[2][1] << "*" << a[0][2] << " + " << a[2][0] << "*" << a[0][1] << "*" << a[1][2] << " - (" << a[2][0] << "*" << a[1][1] << "*" << a[0][2] << ") - (" << a[0][0] << "*" << a[2][1] << "*" << a[1][2] << ") - (" << a[1][0] << "*" << a[0][1] << "*" << a[2][2] << ") = " << D0 << ")\n" << endl; // determinant D1 ------------------------------------------------------------------- sfile << " | " << setw(3) << a[0][3] << " " << setw(3) << a[0][1] << " " << setw(3) << a[0][2] << " |" << endl; sfile << "D1 = | " << setw(3) << a[1][3] << " " << setw(3) << a[1][1] << " " << setw(3) << a[1][2] << " | = (" << (a[0][3] * a[1][1] * a[2][2]) << ") + (" << (a[1][3] * a[2][1] * a[0][2]) << ") + (" << (a[2][3] * a[0][1] * a[1][2]) << ") - (" << (a[2][3] * a[1][1] * a[0][2]) << ") - (" << (a[0][3] * a[2][1] * a[1][2]) << ") - (" << (a[1][3] * a[0][1] * a[2][2]) << ") = " << D1 << endl; sfile << " | " << setw(3) << a[2][3] << " " << setw(3) << a[2][1] << " " << setw(3) << a[2][2] << " |\n" << endl; sfile << "(D1 = " << a[0][3] << "*" << a[1][1] << "*" << a[2][2] << " + " << a[1][3] << "*" << a[2][1] << "*" << a[0][2] << " + " << a[2][3] << "*" << a[0][1] << "*" << a[1][2] << " - (" << a[2][3] << "*" << a[1][1] << "*" << a[0][2] << ") - (" << a[0][3] << "*" << a[2][1] << "*" << a[1][2] << ") - (" << a[1][3] << "*" << a[0][1] << "*" << a[2][2] << ") = " << D1 << ")\n" << endl; // determinant D2 ------------------------------------------------------------------- sfile << " | " << setw(3) << a[0][0] << " " << setw(3) << a[0][3] << " " << setw(3) << a[0][2] << " |" << endl; sfile << "D2 = | " << setw(3) << a[1][0] << " " << setw(3) << a[1][3] << " " << setw(3) << a[1][2] << " | = (" << (a[0][0] * a[1][3] * a[2][2]) << ") + (" << (a[1][0] * a[2][3] * a[0][2]) << ") + (" << (a[2][0] * a[0][3] * a[1][2]) << ") - (" << (a[2][0] * a[1][3] * a[0][2]) << ") - (" << (a[0][0] * a[2][3] * a[1][2]) << ") - (" << (a[1][0] * a[0][3] * a[2][2]) << ") = " << D2 << endl; sfile << " | " << setw(3) << a[2][0] << " " << setw(3) << a[2][3] << " " << setw(3) << a[2][2] << " |\n" << endl; sfile << "(D2 = " << a[0][0] << "*" << a[1][3] << "*" << a[2][2] << " + " << a[1][0] << "*" << a[2][3] << "*" << a[0][2] << " + " << a[2][0] << "*" << a[0][3] << "*" << a[1][2] << " - (" << a[2][0] << "*" << a[1][3] << "*" << a[0][2] << ") - (" << a[0][0] << "*" << a[2][3] << "*" << a[1][2] << ") - (" << a[1][0] << "*" << a[0][3] << "*" << a[2][2] << ") = " << D2 << ")\n" << endl; // determinant D3 ------------------------------------------------------------------- sfile << " | " << setw(3) << a[0][0] << " " << setw(3) << a[0][1] << " " << setw(3) << a[0][3] << " |" << endl; sfile << "D3 = | " << setw(3) << a[1][0] << " " << setw(3) << a[1][1] << " " << setw(3) << a[1][3] << " | = (" << (a[0][0] * a[1][1] * a[2][3]) << ") + (" << (a[1][0] * a[2][1] * a[0][3]) << ") + (" << (a[2][0] * a[0][1] * a[1][3]) << ") - (" << (a[2][0] * a[1][1] * a[0][3]) << ") - (" << (a[0][0] * a[2][1] * a[1][3]) << ") - (" << (a[1][0] * a[0][1] * a[2][3]) << ") = " << D3 << endl; sfile << " | " << setw(3) << a[2][0] << " " << setw(3) << a[2][1] << " " << setw(3) << a[2][3] << " |\n" << endl; sfile << "(D3 = " << a[0][0] << "*" << a[1][1] << "*" << a[2][3] << " + " << a[1][0] << "*" << a[2][1] << "*" << a[0][3] << " + " << a[2][0] << "*" << a[0][1] << "*" << a[1][3] << " - (" << a[2][0] << "*" << a[1][1] << "*" << a[0][3] << ") - (" << a[0][0] << "*" << a[2][1] << "*" << a[1][3] << ") - (" << a[1][0] << "*" << a[0][1] << "*" << a[2][3] << ") = " << D3 << ")\n" << endl; // ------------------------------------------------------------------------------------------------ if (D0 == 0) {sfile << "\nSustava rovnic nema riesenie." << endl;} else { sfile << "\nx = D1 : D = " << x << "\ny = D2 : D = " << y << "\nz = D3 : D = " << z << endl;} sfile << "\n----------------------------------------------------------------------------" << endl; sfile << "Vystup generovany programom ro3n verzia " << ver << endl; sfile.close(); cout << "Data uspesne zapisane." << endl; } else {cout << "Vyskytol sa problem pri vytvarani/otvarani suboru!" << endl;} } return 0; } void ro3n_skuska (long double D0, long double x, long double y, long double z) { // ------------------------------------------------------------------------------------------------ cout << "\nSkuska spravnosti:" << endl; if (D0 != 0) { cout << a[0][0] << "*" << x << " + " << a[0][1] << "*" << y << " + " << a[0][2] << "*" << z << " = " << a[0][3] << endl; cout << a[1][0] << "*" << x << " + " << a[1][1] << "*" << y << " + " << a[1][2] << "*" << z << " = " << a[1][3] << endl; cout << a[2][0] << "*" << x << " + " << a[2][1] << "*" << y << " + " << a[2][2] << "*" << z << " = " << a[2][3] << endl; cout << endl; cout << ((a[0][0]*x)+(a[0][1]*y)+(a[0][2]*z)) << " = " << a[0][3] << endl; cout << ((a[1][0]*x)+(a[1][1]*y)+(a[1][2]*z)) << " = " << a[1][3] << endl; cout << ((a[2][0]*x)+(a[2][1]*y)+(a[2][2]*z)) << " = " << a[2][3] << endl;} else {cout << "Sustava rovnic nema riesenie." << endl;}; // ------------------------------------------------------------------------------------------------ } int main () { znova: ro3n_menu (); zadajte: int input_result = 5; input_result = ro3n_input (); if (input_result == 0) {return 0;}; if (input_result == 1) {goto zadajte;}; // ------------------------------------------------------------------------------------------------ cDeterminant determinant; long double D0 = determinant.vypocitajD (); long double D1 = determinant.vypocitajD1 (); long double D2 = determinant.vypocitajD2 (); long double D3 = determinant.vypocitajD3 (); determinant.postup (D0, D1, D2, D3); long double x, y, z; if (D0 == 0) {cout << "\nSustava rovnic nema riesenie." << endl;} else { x = D1 / D0; y = D2 / D0; z = D3 / D0; cout << "\nx = D1 : D = " << x << "\ny = D2 : D = " << y << "\nz = D3 : D = " << z << endl;} // ------------------------------------------------------------------------------------------------ ro3n_output_save (D0, D1, D2, D3, x, y, z); // ------------------------------------------------------------------------------------------------ vypocitat_dalsi_priklad_a_n: cout << "\nZelate si vypocitat dalsi priklad? [A/N] "; cin.getline (buffer, 50); if ((buffer[0] == 'A') || (buffer[0] == 'a')) {goto znova;} else if ((buffer[0] == 'N') || (buffer[0] == 'n')) {cout << "\nDovidenia!" << endl;} else if ((buffer[0] == 's') && (buffer[1] == 'k')) {ro3n_skuska (D0, x, y, z); goto vypocitat_dalsi_priklad_a_n;} else {goto vypocitat_dalsi_priklad_a_n;}; return 0; }