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: #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!" ); } }
|
|
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 |
|
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. |
|
polepszacz |
» 2017-04-01 15:22:13 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. |
|
« 1 » |