[pascal] bład w programie


(Zalesiak) #1

Mam problem z programem w Pascalu. Niby powinno być dobrze ale wyskakuje mi błąd przy "begin". Zamieszcze tutaj źródło i prosił bym żebyście lookneli u siebie na kompilatorach co jest źle. :frowning:

program liczebniki;

  type

    liczba=object

    L:integer;

    function czytaj:integer;

    end;

  cyfry=object(liczba)

    s,d,j:byte;

    procedure rozklad;

    function setki: string;

    function dziesiatki: string;

    function jednosci: string;

    end;

   liczebnik=object(cyfry)

    z:string;

    procedure pisz;

    end;

   function liczba.czytaj;

    begin

     write('Podaj liczbe (0=
     readln (l);

     czytaj:=l;

     end;

     prcedure cyfry.rozklad;

     begin

      L:=liczba.czytaj;

      s:=L div 100;

      d:=(L-s*100)div 10;

      j:=L-s*100-d*10;

      end;

      function cyfry.setki;

      begin

       case s of

       0:setki:='';

       1:setki:='sto';

       2:setki:='dwiescie';

       3:setki:='trzysta';

       4:setki:='czterysta';

       5:setki:='piecset';

       6:setki:='szescset';

       7:setki:='siedemset';

       8:setki:='osiemset';

       9:setki:='dziewiecset';

       end;

      end;

      function cyfry.dziesiatki;

       begin

        case d of

        0:dziesiatki:='dzisiec';

        1:dziesiatki:='jedenascie';

        2:dziesiatki:='dwanascie';

        3:dziesiatki:='trzynascie';

        4:dziesiatki:='czternascie';

        5:dziesiatki:='pietnascie';

        6:dziesiatki:='szesnascie';

        7:dziesiatki:='siedemnascie';

        8:dziesiatki:='osiemnascie';

        9:dziesiatki:='dziewietnascie';

       end;

   2:dziesiatki:='dwadziescia';

   3:dziesiatki:='trzydziesci';

   4:dziesiatki:='czterdziesci';

   5:dziesiatki:='piecdziesiat';

   6:dziesiatki:='szescdziesiat';

   7:dziesiatki:='siedemdziesiat';

   8:dziesiatki:='osiemdziesiat';

   9:dziesiatki:='dziewiecdziesiat';

  end;

 end;

function cyfry.jednosci;

begin

 case s+d+j of

 0:jednosci:='zero'

 else

  case d of

  0:jednosci:='';

  1:jednosci:='jeden';

  2:jednosci:='dwa';

  3:jednosci:='trzy';

  4:jednosci:='cztery';

  5:jednosci:='piec';

  6:jednosci:='szesc';

  7:jednosci:='siedem';

  8:jednosci:='osiem';

  9:jednosci:='dziewiec';

  end;

 end;

end;

end;

procedure liczebnik.pisz;

  begin

   cyfry.rozklad;

   z:=cyfry.setki+''+cyfry.dziesiatki+''+cyfry.jednosci;

   writeln(z);

   end;

  var

  a,b:liczebnik;

  begin

  a.pisz;

  b.pisz;

  readln;

end.

(Gina Gina) #2

Tego siana to miałeś co nieco :PPP

:wink: Zachowałem Twój styl :stuck_out_tongue:


(Zalesiak) #3

No i spróbowałem skompilować w FreePascalu i Turbo Pascalu 7.0 i nie wychodzi :frowning: W jakim Ty programie kompilowałeś ??


(Gina Gina) #4

To co było opublkowane, chodziło w TP7, przed chwilą w okno wrzuciłem

kod w którym dodałem minimalne zmiany i chodzi w FPC/TP7. :ok:

Żeby nie było wątpliwości - ten poprawiony kod

ściagnąłem z powrotem do mnie i skompilowałem

jeszcze raz TP7 i FPC - wszystko idzie, program działa poprawnie. :spoko:

Żeby nie było wątpliowości - opcje kompilacji TP7.0 mam

ustawione jak poniżej (Wywołanie Ctrl-o-o)

{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R-,S+,T-,V+,X+,Y+}

{$M 16384,0,655360}


(Zalesiak) #5

O co z tym chodzi bo nie czaje najlepiej żebyś podrzucił jakieś screenshoty


(Gina Gina) #6

To są tzw opcje kompilacji - ustawienie warunków w/g których

ma działać kompilator TP7. Jeżeli się nie mylę - są to standardowo

używane opcje - nie przestawione przez mnie.

Zapewniają powtarzalność wykonywanej kompilacji.

Aby zbyt wiele nie kombinować -należy je wkopiować jeszcze przed

linię zawierającą słowa: program Liczebniki;

i skompilować taki plik używając TP7.0 :spoko:

W oknie jest kompletny kod+opcje :wink: