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

Program rozwiązujący równania metodą wyznaczników - funkcja

Ostatnio zmodyfikowano 2017-04-01 15:22
Autor Wiadomość
Craaash
Temat założony przez niniejszego użytkownika
Program rozwiązujący równania metodą wyznaczników - funkcja
» 2017-03-18 13:21:43
Cześć, dopiero uczę się programować. Chciałbym zacząć łapać dobre nawyki - dlatego piszę tutaj. Chciałbym, aby ktoś prześledził mój kod i się wypowiedział - co można zrobić lepiej, co jest źle. Pozdrawiam. :)

Treść zadania:
Napisz program, który wczytuje ze standardowego wejścia współczynniki
układu dwóch równań liniowych z dwoma niewiadomymi i wypisuje
na standardowym wyjściu rozwiązanie układu równań. W przypadku
nieskończonej liczby lub braku rozwiązań program powinien
wypisać na standardowym wyjściu odpowiednią informację

Kod:
C/C++
#include <stdio.h>

void wyznaczniki( int a, int b, int e, int c, int d, int f );

int main( void ) {
    int a, b, e, c, d, f;
    printf( "Aby obliczyc uklad rownan postaci: \n"
    "ax + by = e \n"
    "cx + dy = f \n"
    "Podaj wspolczynniki a, b, e, c, d, f: " );
   
    scanf( "%d %d %d %d %d %d", & a, & b, & e, & c, & d, & f );
   
    if( a == 0 && b == 0 && c == 0 && d == 0 ) printf( "Wszystkie wspolczynniki przy nie wiadomych sa rowne 0!" );
    else wyznaczniki( a, b, e, c, d, f );
   
    return 0;
}

void wyznaczniki( int a, int b, int e, int c, int d, int f ) {
    int W, Wx, Wy, x, y;
   
    W = a * d - b * c;
    Wx = e * d - b * f;
    Wy = a * f - e * c;
   
    if( W != 0 ) {
        x = Wx / W;
        y = Wy / W;
       
        printf( "x = %d, y = %d", x, y );
    }
    else {
        if( Wx == 0 && Wy == 0 ) printf( "Uklad ma nieskonczenie wiele rozwiazan!" );
        else printf( "Uklad nie ma rozwiazan!" );
       
    }
   
}
P-159088
latajacaryba
» 2017-03-18 17:47:49
Czytałem, jak jeden z doświadczonych użytkowników pisał coś typu:
Zastanów się, czy piszesz w C czy w C++
A było to odnośnie używania printf i scanf, więc jeśli chcesz pisać w C++ to używaj cout, cin.

Poza tym ktoś mi radził, by w main'ie nie zwracać 0
return 0;

tylko EXIT_SUCCESS - makro z biblioteki cstdlib
return EXIT_SUCCESS
ale nie mam pojęcia jakie to ma znaczenie
P-159117
jankowalski25
» 2017-03-18 19:25:34
Poza tym ktoś mi radził, by w main'ie nie zwracać 0
return 0;

tylko EXIT_SUCCESS - makro z biblioteki cstdlib
return EXIT_SUCCESS
ale nie mam pojęcia jakie to ma znaczenie
To nie ma w sumie żadnego znaczenia przy informowaniu o tym, że coś zakończyło się sukcesem. Pewnie chodziło o
EXIT_FAILURE
, które nie musi być równe jeden (chociaż zazwyczaj tak właśnie jest). A jak już ktoś korzysta z
EXIT_FAILURE
, to zazwyczaj przy okazji dokłada również
EXIT_SUCCESS
, aby było jednolicie.
P-159123
polepszacz
» 2017-04-01 15:22:13
C/C++
int W, Wx, Wy, x, y;


W = a * d - b * c;
Wx = e * d - b * f;
Wy = a * f - e * c;

if( W != 0 ) {
    x = Wx / W;
    y = Wy / W;

Koszmarny błąd. W,Wx,Wy nie mogą być całkowitoliczbowe. Wystąpi błąd zaokrąglenia.
P-159674
« 1 »
  Strona 1 z 1