Skocz do zawartości
Puchacz1

Matematyczny Problem W C++

Rekomendowane odpowiedzi

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 przez Puchacz1

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.



×
×
  • Dodaj nową pozycję...