dokladnosc w pascalu

0

Mam <ort>zczytac !!!sczytać!!!</ort> z pliku dana x oraz krok.
Potem od tego iksa musze dodac krok tworzac nowy X dodaje go ale w pewnym momencie nowy iks przyjmuje dziwne wartosci zwiazane to jest chyba z tym ze ten pierwszy x ort! jest za dokladnie.
Moja procedurka wyglada mniej wiecej tak

begin{funkcji CzytajDane} 
  i:=0; 
  assign(wej,'in.dat'); {przypisuje zmienna plikowa do pliku "in.txt"} 
  reset(wej);           {otwiera plik in.txt} 
  while not eof(wej) do {dopoki nie ma konca pliku rob} 
    begin{petli while} 
      inc(i); 
      if i=1 
        then 
          begin {dla zapisu kroku} 
            readln(wej,gkrok);    {jezeli 1 wiersz zapisz jako krok} 
          end {dla zapisu kroku} 
        else 
          begin 
            read(wej,yprzed[i-1]);   { zapisz jako y} 
            readln(wej,xprzed[i-1]); {zapisz jako x} 
            ile:=i {globalny licznik dla procedury ZapiszDane} 
          end; 
    end;{petli while} 
  xfirst:=xprzed[1]; {przypisz pierwsza zmiennna 'i=0' do xfirst} 
   ... 
  close(wej); {zamyka plik "in.txt")} 
end;{funkcji CzytajDane}

Ta procedurka ort! dane a ta licze nowy X

begin {procedury pxpo} 
  i:=1; 
  xpo[1]:=xfirst;           {pierwszej nowej przypisz stara nowa} 
  while xpo[i]<xlast do  {doczasu az i bedzie wieksze od ile licz nowe iksy} 
    begin 
      xpo[i+1]:=xpo[i]+gkrok; {od pierwszego x dodawaj krok az do konca przedzialu} 
      i:=i+1; 
    end; 
  ilepo:=i; 
end; {procedury pxpo} 

i problem jest taki ze po ktorejs tam z kolei dodatniu dodaje mi zly krok. przy mnozenu efekt taki daje za duzo dokladnosc i maly przyczynek sumuje sie tworzac wielka wartosc a tu? Czy ktos wie co moze byc proplemem
znalazlem ze do pewnego miejsa liczy mi dobrze a podem zwieksza dokladnosc ale w jaki sposob?

0

Wiesz... Samo wnętrze funkcji niewiele da. Może dorzuciłbys jeszcze ten kawałek przed z deklaracjami?

0

Zmienne gkrok oraz wszelkie x są zadeklarowane jako real. Zauważyłem, że liczy mi xpo wporządku a w pewnym momencie dodaje wiekszą liczbę wygląda to mniej wiecej tak: 0.100
0.200
0.300
a potem nagle
0.482 lub coś takiego

1 użytkowników online, w tym zalogowanych: 0, gości: 1