ďťż

Ładny brzuch

Mam problem. Pisałem program obliczający wartość x w reównaniu sześciennym i napotkałdem coś dziwnego wiec napisałem sobie program pomocniczy (kompiluje w Dev-c++), podaje kod pomocniczy #include <iostream> using namespace std; int main() { int a, b, c, d; float e=0.4; while(1) { cout<<"\na= "; cin>>a; cout<<"\nb= "; cin>>b; cout<<"\nc= "; cin>>c; cout<<"\nd= "; cin>>d; float a2=static_cast<float>(a); float b2=static_cast<float>(b); float c2=static_cast<float>(c); float d2=static_cast<float>(d); cout<<"\nd2= "<<d2; float m1=a2*e*e*e; float m2=b2*e*e; float m3=c2*e; float m4=d2; cout<<"\nm1= "<<m1; cout<<"\nm2= "<<m2; cout<<"\nm3= "<<m3; cout<<"\nm4= "<<m4; cout<<m1+m2+m3+m4;     }         }

niby wszysto jest w pożądku ale po skompilowaniu i wprowadzeniu danych widać ze zmienna m4 nie ma wartość wporowadzonej jako d. Nie mam pojęcie dlaczego tak sie dzieje. przy wprowadzeniu danych 5, 23, -35, 10 wynik ostatniego dodawania powinien wynieść 0...



Rozwiązanie zagadki pojawi się samo, jak dasz linię

cout<<"\nm4= "<<m4<<endl;

zamiast

cout<<"\nm4= "<<m4;

no ale nie o to chodzi juz wiem czemu mi nie działo
wynik dodawania dla liczb 5,23,-35,10 to zero ale jest błąd zera maszynowaego i wychodzi w przyblizeniu zero
bede musiał dać inny warunek we własciwym kodzie programu niż if(to_wyrazenie==0)
a brak endl to moje niedociagnięcie, ale nie o to mi chodziło ale dziękuje

Ale zmienna m4 ma wartość taką jak podane d. Fakt, że zero to prawie zero, ale jak obliczasz równanie trzeciego stopnia, to możesz zadać z góry dokładność z jaką ma być podany wynik.



Eh... Nie można tu jakoś skasować własnej wypowiedzi?
Użytkownik Chmurek edytował ten post 17 luty 2006, 22:45
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •