Skocz do zawartości
Forum komputerowe PC Centre
kil

[Turbo pascal]Zaokrąglanie

Rekomendowane odpowiedzi

witam,

mam pytanie jak mam zmienna zaokrąglić , program oblicza czy sie opłaca jechać z miasta a do b (zlecenie przewozu towaru ). mam problem bo samochód nie może zrobić 2,3 kursu tylko 3 powinien i nie wiem jak to zrobić . ktoś pomorze ?

 

var
cenapali,km,opl,l,ilosc,lad:real;

cenapali// cena paliwa :=5.67 ;
    km:=km/100 ;// ilość przejechanych km dzielona przez 100
    opl:=l*km*cenapali ;// obliczanie kosztów transportu towaru z miasta a do b l ile samochód pali km podane w np 3,44
    e:=ilosc/lad ;// ładowność samochodu i ilość jaką musi przewieść
    opl1:=zysk-(opl*e);

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Pomoże.

 

Do zaokrąglania służy funkcja round().

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

tak wiem , tylko jak robię to nie działa błąd wyskakuje

xxxxx jakiś kod

round(e);

xxxx

 

tylko musi być

xxxx

writeln('cos tam',round(e));

xxx

a chce żeby jak by było np 3.3 to żeby zaokrągliło do 4

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Czyli zawsze ma zaokrąglać w górę? Musisz sam napisać taką funkcję, bo w TP czegoś takiego nie ma.

Wyglądałoby to pewnie tak:

function ceil(value: real): integer;
begin
 if frac(value) > 0.0 then
   ceil := trunc(value) + 1
 else
   ceil := trunc(value);
end;

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

luk1999 nie rozumiem tej funkcji , możesz objaśnić albo powiedzieć jak to zrobić ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ale czego nie rozumiesz? Trunc() odrzuca część po przecinku, a Frac() zwraca część ułamkową.

Masz użyć tej funkcji zamiast round(). Sprawdź coś takiego:

function ceil(value: real): integer;
begin
 if frac(value) > 0.0 then
   ceil := trunc(value) + 1
 else
   ceil := trunc(value);
end;

begin
 WriteLn(2.0);
 WriteLn(ceil(2.0));
 WriteLn(2.3);
 WriteLn(ceil(2.3));
 ReadLn;
end.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

×
×
  • Dodaj nową pozycję...