Dodaj do ulubionych

[pascal]-Dziwny komunikat w peti

29.12.05, 21:42
Witam
Pisze sobie program, pisze, i mam sobie cos takiego:

a:real;
dl:lomgint;
...
a:=(dl div 2);

To "a" jest w petli, po pierwszym wykonaniu petli dostaje ladny wynik, ale
przy drugiej probie gdy dochodzi do "a" dostaje komunikat: "Program recieved
signal SIGFPE Arithmetic exception". Czy to wina tego, że "a" ma juz cos
przypisane? Jesli tak to jak "wyzerowac" to "a"?

pozdrawiam
b

--
Kochamy bez namiętności, pieniądz aspektem przyjemności...
Edytor zaawansowany
  • mx-5 29.12.05, 22:02
    Polecam debuggera i watcha i zobaczyc co sie konkretnie dzieje.
    Sigfpe jest jedynym z sygnalow standardu POSIX:
    sig - od signal i fpe - floating point exception.
    Sygnal ten jest wysylany od systemu operacyjnego wtedy, gdy moze nastapic jakis
    rodzaj przepelnienia (overflow).Ogolnie jednak jest pare sytuacji, ktore
    generuja ten sygnal:

    - dzielenie przez zero liczby calkowitej
    - przepelnienie zakresu liczb calkowitych ( typ integer )
    - dzielenie przez zero liczy niecalkowitej ( float, real jak tam chcesz )
    - przepelnienie zakresu float,real
    - roznorodne wyjscia poza zakres
    - niedomiar( underflow) dla liczby real,float

    Niestety nie moge powiedziec wiecej bez znajomosci kodu programu.
    Pozdrawiam!
  • jasnoniebieski.5 29.12.05, 22:17
    A co tam, niech strace:) i tak chyba nikt nie zorientuje sie o co chodzi w tym
    zadanku :)

    Aha, zapomniales dopisac w tych wypisanych przez Ciebie sytuacjach mojej osoby :)
    ok, kawalek tego kodu:

    Program pewienprog;
    uses
    crt;
    var
    i,h,g,w:real;
    c,licz,q,lz:longint;
    k:boolean;
    a,dl,m1,m2,iwp1,iwp2:longint;
    wynik:real;

    Procedure parzy();
    begin
    a := (dl div 2);
    if iwp2 < a then
    begin
    h:=dl+m1;
    g:=h-m2;
    w:=g/iwp2;
    wynik:=w;
    writeln(wynik:0:0);
    end
    else
    begin
    if iwp2 = a then
    begin
    ...(w dalszej czesci tej procedury "a" juz nigdzie nie wystepuje wiec nie bede
    zasmiecac)
    I w calym programie nigdzie wiecej nie ma "a". W powyzszym przypisalem
    a:longint; ale nadal pojawia sie to samo. Po pierwszej petli w "a" jest
    przykladowo "3". Potem wlasnie sypie sie ten program:)

    pozdrawiam
    b

    --
    Kochamy bez namiętności, pieniądz aspektem przyjemności...
  • mx-5 29.12.05, 22:30
    Po pierwsze nie bardzo widze petle w tym programie ;)
    Po drugie gdy wklepalem go do siebie , tp za pierwszym razem wchodzi do drugiego
    if-a ( tego ktorego nie dodales ;)) ale to szczegol bo....
    - dl jest niezainicjowane, iwp2 podobnie.Funkcja parzy nie przyjmuje zadnych
    argumentow, wiec wartosci tych zmiennych sa nieokreslone.Moga pod nimi byc
    dowolne liczby stad dziwne wyniki programu.A co chcesz napisac i do czego ma
    sluzyc ten program ? :)
  • jasnoniebieski.5 29.12.05, 22:39
    Hm...wiecej szczegolow na twoim mejlu :)


    --
    Kochamy bez namiętności, pieniądz aspektem przyjemności...
  • jasnoniebieski.5 29.12.05, 22:39
    oczywisice mialo byc: "na twojej skrzynce" :) wogole juz nie mysle
    --
    Kochamy bez namiętności, pieniądz aspektem przyjemności...
  • mx-5 29.12.05, 22:49
    Czekam, bo narazie skrzynka pusta :)
    Dla pewnosci moj mail:

    mx-5@gazeta.pl

  • mx-5 29.12.05, 22:50
    spoko doszlo :) falszywy alarm ;)
  • mx-5 29.12.05, 23:54
    Teraz Ty sprawdz poczte ;)
  • mx-5 30.12.05, 00:05
    Hmmm.. nie moge do Ciebie wyslac maila , wyskakuja mi jakies errory :/
    Sproboj utworzyc jakies konto z mailem na tlenie jednorazowe , bo zaraz bedziesz
    mial pelno spamu i wysle Ci pierwsza wersje tego zadanka :)
  • hydroxyzine 30.12.05, 00:12
    A może byście tak upublicznili te pogaduszki? Jest prawdopodobne, że kiedyś
    komuś się przyda ta informacja - wszak to forum.
  • mx-5 30.12.05, 02:06
    ok poszlo :)
    Moje zabezpieczenia linuxowe sapaly sie o nieznana osobe ;)

Popularne wątki

Nie pamiętasz hasła

lub ?

 

Nie masz jeszcze konta? Zarejestruj się

Nakarm Pajacyka