Puchacz1 Opublikowano 8 Stycznia 2007 Zgłoś Opublikowano 8 Stycznia 2007 (edytowane) witam próbuje zapisać w kalkulatorze opcje obliczania pola prostokąta http://www.epsilon.kim.pl/Matura/Planimetria/planimetria.htm i zapisuję to tak : float nwynik7 = (1/2) * nliczba10 * nliczba11; std::cout << "Pole Trojkata :" << nwynik7; program zawsze oblicza wynik 0. Dodam jeszcze, że nie mam problemu z obliczeniem obwodu trójkąta czy naprzykład pola lub obwodu kwadratu. Ru jest wszystko ok. Co więc źle jest zapisane w tym działaniu ? wygląda na to, że w zmiennych mam wszystko dobrze... rozwiązałem problem.... rozwiązaniem jest podanie liczby 0.5 zamiast 1/2 Edytowane 8 Stycznia 2007 przez Puchacz1 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 11 Stycznia 2007 Zgłoś Opublikowano 11 Stycznia 2007 wypadało by wiedzieć czemu tak sie stało... :] bo to wcale nie jest rozwiązanie.... kiedy piszesz liczb w formie 1/2 kompilator traktuje to jako liczbę typu int, czyli robi 1/2 = int 0. Rozwiązaniem jest np zrzutowanie tego na float, czyli (float)1/2 -> to już powinno dać wynik 0.5. Innym rowiazaniem, zapewne bardziej elegantszym :) jest zapisanie liczby w formacie takim, aby kompilator od razu wiedział że to nie jest int, czyli np 1.0f/2.0f. Idąc dalej, nie wiem czy nauczano Cię już w szkole, iż mnożenie jest przemienne, a dzielenie to odwrotność mnożenia.. zatem czy nie prościej zapisać to równanie jako : nLiczba10 * nLiczba11/2 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Puchacz1 Opublikowano 11 Stycznia 2007 Zgłoś Opublikowano 11 Stycznia 2007 no można też tak jak napisałeś niżej. Poprostu o tym nie pomyślałem a zacząłem kombinować z tym 1/2. Ale dzięki za wytłumaczenie. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
grzmot Opublikowano 12 Stycznia 2007 Zgłoś Opublikowano 12 Stycznia 2007 Przecież już w poprzednim wątku o tym samym ktoś Ci napisał, że taki zapis da 0 :mur: Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...