• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Działania na liczbach - problem

Object Storage Arubacloud
0 głosów
428 wizyt
pytanie zadane 3 września 2016 w C i C++ przez Gambr Dyskutant (7,530 p.)
zamknięte 11 lipca 2018 przez Gambr
Witajcie. jestem początkujący i uczę sie c++. Ostatnio po zapoznaniu sie z podstawami omawianymi w zakresie odcinków kursu 1 i 2 zacząłem wymyślać sobie proste zadania do utrwalenia wiedzy. Jednym z nich jest kalkulator idealnej wagi kobiet. Waga obliczana jest ze wzoru X = (wzrost - 100) * 0,85 (Oczywiście wcześniej uzyskuje od użytkownika dane za pomocą cin o jego wzrost ). Program działa ale wynik jego działania który potem powinien wyświetlić cout wynosi zawsze 0. Dlaczego tak jest ? Co zrobić żeby liczył poprawnie mnożenie przez ułamki?
komentarz zamknięcia: XD
komentarz 4 września 2016 przez Patrycjerz Mędrzec (192,320 p.)

Program działa ale wynik jego działania który potem wyświetlać za pomocą cout

Przepraszam, ale to zdanie wygląda tak, jakby było wyplute przez jakiś translator.

Pytanie nie zawiera żadnej prośby ani pytania, więc jest bezwartościowe (nie wiem, ile razy jeszcze to napiszę na tym forum).

komentarz 4 września 2016 przez ZakosiliMiNeta Nałogowiec (30,870 p.)
Standart
komentarz 4 września 2016 przez Patrycjerz Mędrzec (192,320 p.)

Standard wink

komentarz 4 września 2016 przez Eryk Andrzejewski Mędrzec (164,260 p.)
Proszę o poprawienie tego pytania, w przeciwnym wypadku zostanie ono zamknięte.
komentarz 6 września 2016 przez Gambr Dyskutant (7,530 p.)
Poprawiłem. Przepraszam za poprzednią wersję która była źle sformułowana.

3 odpowiedzi

0 głosów
odpowiedź 3 września 2016 przez niezalogowany
co chcesz osiągnąć
komentarz 3 września 2016 przez Gambr Dyskutant (7,530 p.)
Pytanie sie samo obcięło. Chodzi o to ze jak mnożę x = (wzrost - 100) * 0,85; To wynik jest zawsze 0 a nie powinien
komentarz 3 września 2016 przez Gambr Dyskutant (7,530 p.)
A jak dam do wzoru liczby całkowite to mnożenie jest wykonywane poprawnie i nie ma problemu. Dlatego pytanie jest jak mnożyć w c++ przez liczby z przecinkiem aby działało poprawnie ?
komentarz 3 września 2016 przez niezalogowany

to teraz tak
(wzrost - 100) * 0,85 

(int - int)*double

zrób rzutowanie nawiasu na double
 

0 głosów
odpowiedź 4 września 2016 przez MultiGumis Początkujący (330 p.)
Nie rozumiem dokładnie o co ci chodzi ale pewnie używasz typu int (całkowity) zamiast float lub double (zmiennoprzecinkowy)
0 głosów
odpowiedź 4 września 2016 przez Eryk Andrzejewski Mędrzec (164,260 p.)
edycja 4 września 2016 przez Eryk Andrzejewski

Jeśli dobrze widziałem w jednym z twoich komentarzy, to używasz czegoś takiego:

x = (wzrost - 100) * 0,85; 

Pamiętaj, że w C++ (jak i w wielu innych językach programowania) do wyrażania liczb zmiennoprzecinkowych używamy kropki, a nie przecinka. Wystarczy więc zmienić 0,85 na 0.85 i wszystko powinno działać :)

Twoje wyrażenie jest interpretowane w taki sposób, że najpierw wyliczana jest wartość x = (wzrost - 100) * 0 (przecinek jest operatorem który służy min do "rozdzielania operacji"). Mnożenie przez zero, daje nam wartość zero, a więc dlatego otrzymywałeś 0 jako tą idealną wagę.

Następnie do kodu jest wstawiane 85 - które nic nie robi :)

Innymi słowy

x = ((wzrost - 100) * 0,85); //Nawiasy są konieczne, gdyż operator , ma większy priorytet niż operator =

to to samo co:

x = (wzrost - 100) * 0;
85; //Ta linia tak na prawdę nic nie robi, ale jest możliwa do skompilowania.

Podobne pytania

0 głosów
1 odpowiedź 588 wizyt
pytanie zadane 27 września 2016 w Java przez Damian Sobieski Początkujący (440 p.)
+1 głos
2 odpowiedzi 188 wizyt
0 głosów
2 odpowiedzi 1,038 wizyt

92,552 zapytań

141,399 odpowiedzi

319,534 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...