Witam. Chciałem napisać prosty program do rozwiązywania układów równań. Udało się(w sumie to moj pierwszy samodzielny program 8) )-program działa, ale kiedy za liczbę chcę wstawić np 1/2 program zaczyna szaleć. Nie pomaga wpisywanie ułamka w postaci 1.0/2.0. Pozdrawiam. Umieszczam kod źrodłowy:
#include #include void main (void) { int i, w ,wx, wy, wz, a, b, c, x[4], y[4], z[4], wyraz_wolny[4]; cout<<“Rozwiazywanie ukladu trzech rownan z trzema niewiadomymi.”; cout<<"\n \npodaj liczby stojace przy x\n\n"; for (i=1; i<=3; i++) { cout<<“x[”< cin>>x; } cout< for (i=1; i<=3; i++) { cout<<“y[”< cin>>y; } cout< for (i=1; i<=3; i++) { cout<<“z[”< cin>>z; } cout<<"\n\npodaj wyrazy wolne\n\n"; for (i=1; i<=3; i++) { cout<<“wyraz wolny(”< cin>>wyraz_wolny; } w=(y[2]*z[3]-z[2]*y[3])*x[1]-(x[2]*z[3]-z[2]*x[3])*y[1]+(x[2]*y[3]-y[2]*x[3])*z[1]; cout<<"\n\nwyznacznik glowny w="< wx=(y[2]*z[3]-z[2]*y[3])*wyraz_wolny[1]-(wyraz_wolny[2]*z[3]-z[2]*wyraz_wolny[3])*y[1]+(wyraz_wolny[2]*y[3]-y[2]*wyraz_wolny[3])*z[1]; cout<<"\n\nwyznacznik glowny wx="< wy=(wyraz_wolny[2]*z[3]-z[2]*wyraz_wolny[3])*x[1]-(x[2]*z[3]-z[2]*x[3])*wyraz_wolny[1]+(x[2]*wyraz_wolny[3]-wyraz_wolny[2]*x[3])*z[1]; cout<<"\n\nwyznacznik y wy="< wz=(y[2]*wyraz_wolny[3]-wyraz_wolny[2]*y[3])*x[1]-(x[2]*wyraz_wolny[3]-wyraz_wolny[2]*x[3])*y[1]+(x[2]*y[3]-y[2]*x[3])*wyraz_wolny[1]; cout<<"\n\nwyznacznik z wz="< // -------koniec liczenia wyznaczników!-------- if (w==0 || wx==0 || wy==0 ||wz==0) {cout"\nTworzy sie symbol nieoznaczony - 0/0 !" else if (w==0) //inne wyznaczniki maja 0! {cout"Rownanie nie ma rozwiazan!" else { a=wx/w; b=wy/w; c=wz/w; //koniec liczenia cout"\n\nGOTOWE\nZa x nalezy podstawic liczbe : " cout"\nZa y nalezy podstawic liczbe : " cout"\nZa x nalezy podstawic liczbe : " } getch(); } NO I CO TERAZ??? EDIT Wstawiany kod obejmuj znacznikami lub (adpawl)[/color]
Airborn
(Airborn)
1 Czerwiec 2007 17:39
#2
teraz musisz poczytać o typach zmiennych, nie możesz zmiennej typu int przypisać ułamka, int przechowuje tylko liczby całkowite
adam9870
(adam9870)
1 Czerwiec 2007 20:09
#4
W celu przypisania ułamka możesz użyć zmiennej typu float , która umożliwia zapisywanie liczb zmiennoprzecinkowych, czyli inaczej mówiąc - ułamków.
Poczytaj:
http://www.edu.godula.com/?zo=cpp_02
a ja chciałbym wprowadzać ułamki zwykłe
ja bym uzyl double np
double j = 1.0/2.0
ja tego uzylem do mojego programu ktory obliczal pola… 8)
Ryan
(Ryan)
2 Czerwiec 2007 08:16
#7
Należy jednak pamiętać, że float jest przybliżeniem i jeśli reprezentujesz ułamki zwykłe jak dwa floaty to nie możesz mieć gwarancji, że 2/3 * 9/4 * 5/3 = 5/2. Należy także zwrócić uwagę na 0 w mianowniku, inaczej float przyjmie wartość NaN.