Syntax error - co jest źle w moim kodzie?

0

Witam
Piszę tutaj z prośbą o sprawdzenie, a raczej poprawienie mojego programu napisanego w pascalu.
Chciałbym się dowiedzieć co tutaj jest źle i dlaczego pokazuje mi Błąd

Fatal: Syntax error, '';'' expected but ''.'' found

Jestem początkującym programistą w tym języku.
Z góry dziękuje za pomoc. :>

program Kalkulator;
uses crt;
var
  x:char;
  procedure dodawanie;
    var
      a,b:double;
      begin
        ClrScr;
        write ('Podaj pierwszĄ liczb©= ');
        readln(a);
        write('Podaj drugĄ liczb©= ');
        readln(b);
        writeln('Wynik z dodawania wynosi= ',a+b:0:2);
      end;
  procedure odejmowanie;
    var
      a,b:double;
      begin
        ClrScr;
        write ('Podaj pierwsza liczb©= ');
        readln(a);
        write ('Podaj drugĄ liczb©= ');
        readln(b);
        writeln ('Wynik z odejmowania wynosi= ',a-b:0:2);
      end;
  procedure mnozenie;
    var
      a,b:double;
      begin
        ClrScr;
        write ('Podaj pierwszĄ liczb©= ');
        readln(a);
        write ('Podaj liczb© przez jakĄ chcesz pomnoľy† pierwsza liczb©= ');
        readln(b);
        writeln('Wynik z mnoľenia wynosi= ',a*b:0:2);
      end;
  procedure dzielenie;
    var
      a,b:double;
      begin
        ClrScr;
        write ('Podaj pierwsza liczb©= ');
        readln(a);
        write ('Podaj liczb© przez jakĄ chcesz podzieli† pierwszĄ liczb©= ');
        readln(b);
        writeln('Wynik z dzielenia wynosi= ',a/b:0:2);
      end;
  procedure potegowanie;
   var
     i,wb,n,a:longint;
     y:double;
     begin
       ClrScr;
       write('Podaj Liczb©= ');
       readln(a);
       write ('Podaj pot©g© do kt˘rej chcesz podnies† liczb©');
       readln(n);
       y:=1;
       if n<0 then wb:=(-1)*n
       else wb:=n;
       if n=0 then y:=1
       else;
       for i:=1 to wb do
       y:=y*a;
       if n<0 then y:=1/y;
       writeln ('Wynik=',y:0:2);
       readkey
     end;
  procedure pierwiastkowanie;
    var
      a,n:double;
      begin
        ClrScr;
        write('Podaj liczb© pod pierwiastkiem= ');
        readln(a);
        write('Podaj Stopieä pierwiastka= ');
        readln(n);
        Writeln('Pierwiastek wynosi=', exp (1/n*ln(a)):0:2);
        readln;
      end;
  procedure logarytm1;
    function logarytm(a,b:double):double;
    begin
      if(a>0) and (b<>1) and (b>0) then
      logarytm := ln(a)/ln(b)
      else;
    end;

  procedure menu;
    begin
      repeat;
      ClrScr;
      writeln('  ==========');
      writeln('  Kalkulator');
      writeln('  ==========');
      writeln('1.Dodawanie');
      writeln('2.Odejmowanie');
      writeln('3.Mnoľenie');
      writeln('4.Dzielenie');
      writeln('5.Pot©gowanie');
      writeln('6.Pierwiastkowanie');
      writeln('7.Logarytm dziesi©tny');
      writeln('0.Koniec');
      x:=readkey;
      case x of
        '1' :dodawanie;
        '2' :odejmowanie;
        '3' :mnozenie;
        '4' :dzielenie;
        '5' :potegowanie;
        '6' :pierwiastkowanie;
        '7' :logarytm1;
    end;
    until x='0';
  end;
  begin
  menu;
end.

dodanie znacznika <quote> dla treści błędu + zamiana znacznika <delphi> na <code class="delphi"> - fp

0

Nigdzie nie masz zakończenia funkcji logarytm1, sformatuj po ludzku ten kod, to się przekonasz.

0

Co zrobić? Przede wszystkim poczytać kursy z podstawami Pascala. Brakuje Tobie ostatniego end; po linijce z menu. Napisał Tobie już o tym @Inquis1t0r w poprzednim komentarzu powyżej. Jakbyś ogarniał podstawy, to byś od razu pojął o co chodzi. Poza tym funkcja logarytm po else nie zwraca rezultatu, co też jest błedem i może powodować późnej problemy gdyż nie wiadomo co zwróci.

Także proponuje zasiąć do kursów, które znajdziesz na google. Najpierw też należy pomyśleć,po kombinować i to samodzielnie, a dopiero po wyczerpaniu wszystkich możliwości - pisać na forum. Do tego z podstawami pisz w dziale Newbie (tam już przeniósł wątek @madmike). I oczywiście należy wstawiać kod w znaczniki. Nie samo code ale z dodatkiem pascal albo najszybciej można też w delphi.

EDIT: jak edytowałem posta dopiero zauważyłem, że ubiegł mnie @Patryk27. Ale dzięki temu wszystko powinno być jasne w kwestii kodu autora wątku.

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