Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Metoda współczynników-układy Cramera

Ostatnio zmodyfikowano 2014-09-18 10:06
Autor Wiadomość
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 ?

C/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)
P-117137
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.
P-117138
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 == .

C/C++
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;
       
       
    }
   
}
P-117140
« 1 »
  Strona 1 z 1