Dlaczego wynikiem działań jest zawsze 1.00000 albo 0.000000?

0

Ktoś mógłby pomóc, dlaczego taki program zwraca zawsze albo 1.00000 albo 0.000000, obojętnie co wpiszę :(((
screenshot-20180303135612.png

0

Zapoznaj się z takimi zagadnieniami jak:

  • rzutowanie typów z float na int i z int na float
  • błędy działań zmiennoprzecinkowych

a oświecenie będzie ci dane

0

Masz slasha zamiast backslasha w formacie scanfa. Możliwe, że coś więcej, nie chce mi się przepisywać kodu z obrazka.

1

jakby ktoś zastanawiał się nad tym samym to powinno być \n zamiast /n i działa wszystko :)

0
030303 napisał(a):

jakby ktoś zastanawiał się nad tym samym to powinno być \n zamiast /n i działa wszystko :)

Fajnie, tylko uważaj w przyszłości na mieszanie typów zmiennoprzecinkowych i całkowitoliczbowych, oraz dodatkowo signed i unsigned. Łatwo się machnąć. Błędy związane z reprezentacją liczb zmiennoprzecinkowych i działaniami na nich też dają w kość.

3

brak obsługi błędów robi swoje. Powinno być tak:

if (2 == scanf("%d\n%d", &n, &m)) {
    T = … ;
     printf("%f\n", T);
}

wtedy problem wyszedłby od razu

2

Jeśli ta linijka obliczająca T miała być jakimś fikuśnym wzorkiem graficznym to wygląda spoko.
Ale jak to ma coś sensownego obliczać to rozbij to na (nazwane) podwyrażenia, bo jeśli to jest na jakieś zaliczenie to obecna forma jest do uwalenia.

0

to miał być właśnie taki wzorek graficzny na zaliczenie :)

vpiotr napisał(a):

Jeśli ta linijka obliczająca T miała być jakimś fikuśnym wzorkiem graficznym to wygląda spoko.
Ale jak to ma coś sensownego obliczać to rozbij to na (nazwane) podwyrażenia, bo jeśli to jest na jakieś zaliczenie to obecna forma jest do uwalenia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1