Ĺ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
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