Metoda współczynników-układy Cramera
Ostatnio zmodyfikowano 2014-09-18 10:06
Anim Temat założony przez niniejszego użytkownika |
Metoda współczynników-układy Cramera » 2014-09-18 00:24:55 Hej. Mam do stworzenia program rozwiązujący układ równań liniowych z dwoma niewiadomymi. Program, który stworzyłem "działa", jednak nie wiem dlaczego w przypadku podania współczynników dla układu nieoznaczonego bądź też sprzecznego nie drukuje komentarza cout<<"Uklad nieoznaczony" , bądź cout<<"Układ sprzeczny"... Czy ktoś mógłby mi pomóc ? #include<iostream>
using namespace std;
float a, b, c, d, e, f; float x, y;
int funkcja_rachunki() { float W0, W1, W2; W0 = a * d - c * b; W1 = d * e - b * f; W2 = a * f - c * e; cout << "W0 = " << W0 << "\n" << "W1 = " << W1 << "\n" << "W2 = " << W2 << "\n" << endl; if( W0 != 0 ) { x = W1 / W0; y = W2 / W0; cout << "Uklad oznaczony o rozwiazaniu: \n" << x << "\n" << y << endl; if( W0 = 0, W1 = 0, W2 = 0 ) { cout << "Uklad nieoznaczony" << endl; if( W0 = 0 &&( W1 != 0 || W2 != 0 ) ) cout << "Uklad sprzeczny" << endl; } } }
int funkcja_wspolczynniki() { cout << "Podaj wspolczynniki:" << endl; cout << "a = "; cin >> a; cout << "b = "; cin >> b; cout << "c = "; cin >> c; cout << "d = "; cin >> d; cout << "\n"; cout << "Podaj wartosc e oraz f:" << endl; cout << "e = "; cin >> e; cout << "f = "; cin >> f; cout << "\n"; cout << "Twoje rownanie jest postaci : \n" << endl; cout << a << "x + " << b << "y = " << e << "\n" << c << "x + " << d << "y = " << f << endl; cout << "\n"; funkcja_rachunki(); }
int main() { cout << "Jest to program, ktory rozwiazuje uklad rownan liniowych metoda wzorow Cramera." << endl; cout << "\n"; cout << "Metode mozemy uzyc, gdy mamy do czynienia z ukladem rownan liniowych postaci: " << endl; cout << "\n"; cout << "ax + by = e \n" << "cx + dy = f" << endl; cout << "\n"; cout << "gdzie a,b,c,d sa dowolnymi liczbami oraz nie moga jednoczesnie byc rowne 0." << endl; cout << "\n"; funkcja_wspolczynniki(); }
Ps: Podzieliłem sobie to na takie bloki z funkcjami, bo chcę się trochę nimi pobawić (funkcjami - i przyzwyczaić się do nich) |
|
Hesz |
» 2014-09-18 03:07:30 Dzieje się tak dlatego, że ify dla sprzecznego i nieoznaczonego nigdy się nie wykonają. Siedzą wewnątrz if(W0!=0) zatem masz sprzeczność, bo ja wyznacznik główny wyjdzie zerowy to nie wykona się nic co jest w klamerkach a tam masz deklaracje co robić jeśli ten wyznacznik jest równy zero. Wyrzuć warunki dla sprzecznego i nieoznaczonego poza if(W0!=0) i powinno działać. Poza tym polecam stosowanie else if(...) oraz else w takich sytuacjach. |
|
Anim Temat założony przez niniejszego użytkownika |
» 2014-09-18 10:06:48 dzięki :) dodatkowo chodziło o podwójny znak równości == . int funkcja_rachunki() { float W0, W1, W2; W0 = a * d - c * b; W1 = d * e - b * f; W2 = a * f - c * e; cout << "W0 = " << W0 << "\n" << "W1 = " << W1 << "\n" << "W2 = " << W2 << "\n" << endl; if( W0 != 0 ) { x = W1 / W0; y = W2 / W0; cout << "Uklad oznaczony o rozwiazaniu: \n" << x << "\n" << y << endl; } else if(( W0 == 0 ) &&( W1 == 0 ) &&( W2 == 0 ) ) { cout << "Uklad nieoznaczony" << endl; } else if( W0 == 0 &&( W1 != 0 || W2 != 0 ) ) { cout << "Uklad sprzeczny" << endl; } }
|
|
« 1 » |