Skocz do zawartości


[Turbo pascal]Zaokrąglanie


  • Please log in to reply
8 odpowiedzi w tym temacie

#1 kil

kil

    Jestem tu nowy

  • Użytkownicy
  • Pip
  • 3 postów

Napisano 8 styczeń 2011, 21:34

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);


#2 luk1999

luk1999

    Znawca tematu

  • Redakcja
  • PipPipPipPipPip
  • 637 postów
  • Płeć: Mężczyzna
  • Miasto: Zimbabwe (okolice Pabianic/Łodzi)

Napisano 8 styczeń 2011, 21:49

Pomoże.

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

#3 kil

kil

    Jestem tu nowy

  • Użytkownicy
  • Pip
  • 3 postów

Napisano 8 styczeń 2011, 22:23

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

#4 luk1999

luk1999

    Znawca tematu

  • Redakcja
  • PipPipPipPipPip
  • 637 postów
  • Płeć: Mężczyzna
  • Miasto: Zimbabwe (okolice Pabianic/Łodzi)

Napisano 8 styczeń 2011, 22:40

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;


#5 kil

kil

    Jestem tu nowy

  • Użytkownicy
  • Pip
  • 3 postów

Napisano 9 styczeń 2011, 11:16

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

#6 luk1999

luk1999

    Znawca tematu

  • Redakcja
  • PipPipPipPipPip
  • 637 postów
  • Płeć: Mężczyzna
  • Miasto: Zimbabwe (okolice Pabianic/Łodzi)

Napisano 9 styczeń 2011, 11:43

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.


#7 Kamilla122

Kamilla122

    Jestem tu nowy

  • Użytkownicy
  • Pip
  • 22 postów

Napisano 23 maj 2016, 16:39

Bardzo dobre i pouczające wymiany .. Dziękuję! 192.168.1.254

#8 roksidzik

roksidzik

    Jestem tu nowy

  • Użytkownicy
  • Pip
  • 3 postów

Napisano 24 styczeń 2017, 14:02

czesc

#9 cenialow

cenialow

    Jestem tu nowy

  • Użytkownicy
  • Pip
  • 1 postów

Napisano 30 maj 2017, 13:09

xxxxxxxx




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych