Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[PASCAL] Kakulator z wykorzystaniem funkcji

bajtolini 07 Cze 2010 21:47 1982 3
  • #1 07 Cze 2010 21:47
    bajtolini
    Poziom 2  

    Witam. Jestem nowy na tym forum, od pewnego czasu bawie sie pascalem i mam problem z jednym programem ktory napisalem a dokladnie z rozszyforwaniem co zrobilem zle. Napisalem kalkulator ale po debugu pojawia sie "syntax error, ; expected but UNTIL found" gdy klikam na ten napis pokazuje mi ostatnia linijke (ostatni until) ale nie wiem co tam jest zle. Bardzo prosze o pomoc.

    Code:
    program bartek2;
    
    uses crt;
    VAR a,b,c:integer;
        o,d:string;

    {poczatek funkcji}
    function dodawanie(a,b:integer):integer;

    begin
    dodawanie:=a+b;
    end;
    {koniec funkcji}

    {poczatek funkcji}
    function odejmowanie(a,b:integer):integer;

    begin
    odejmowanie:=a-b;
    end;
    {koniec funkcji}

    {poczatek funkcji}
    function mnozenie(a,b:integer):integer;

    begin
    mnozenie:=a*b;
    end;
    {koniec funkcji}

    {poczatek funkcji}
    function dzielenie(a,b:real):real;

    begin
    dzielenie:=a/b;
    end;
    {koniec funkcji}

    {poczatek funkcji}
    function potegowanie(a,b:integer):integer;
    var i:integer;

    begin
    potegowanie:=a;
    for i:=2 to b DO potegowanie:=potegowanie*a;
    end;
    {koniec funkcji}

    {poczatek funkcji}
    function pierwiastkowaniek(a:real):real;

    begin
    pierwiastkowaniek:=sqrt(a);
    end;
    {koniec funkcji}

    {poczatek funkcji}
    function pierwiastkowaniex(a,b:real):real;

    begin
    b:=1/b;
    pierwiastkowaniex:=Exp(b*Ln(a));
    end;
    {koniec funkcji}

    begin
    REPEAT
    clrscr;
    GOTOXY(25,25);
    writeln('Made by Bartlomiej Dur');
    GOTOXY(1,1);
    writeln('Wybierz jakie dzialanie chcesz wykonac i wpisz liczbe odpowiadajaca');
    writeln('(liczby musza byc wieksze do 0)');
    writeln('1.Dodawanie');
    writeln('2.Odejmowanie');
    writeln('3.Mnozenie');
    writeln('4.Dzielenie');
    writeln('5.Potegowanie');
    writeln('6.Pierwiastkowanie (jeszcze nie skonczone)');
    REPEAT
    readln(c);
    IF (c<>1) AND (c<>2) AND (c<>3) AND (c<>4) AND (c<>5) AND (c<>6) THEN writeln('Ty glupi osle zdecyduj sie jeszcze raz');
    UNTIL  (c=1) OR (c=2) OR (c=3) OR (c=4) OR (c=5) OR (c=6);
    IF c=1 THEN Begin
                writeln('podaj liczby ktore chcesz dodac');




                readln(a);
                readln(b);
                dodawanie(a,b);
                writeln('wynik z dodawania wynosi ',dodawanie(a,b));
                end;
    IF c=2 THEN Begin
                writeln('podaj liczby ktore chcesz odjac');
                readln(a);
                readln(b);
                odejmowanie(a,b);
                writeln('wynik z odejmowania wynosi ',odejmowanie(a,b));
                end;
    IF c=3 THEN Begin
                writeln('podaj liczby ktore chcesz pomnozyc');
                readln(a);
                readln(b);
                mnozenie(a,b);
                writeln('wynik z mnozenia wynosi ',mnozenie(a,b));
                end;
    IF c=4 THEN Begin
                writeln('podaj liczby ktore chcesz podzielic');
                readln(a);
                readln(b);
                dzielenie(a,b);
                writeln('wynik z dodawania wynosi ',dzielenie(a,b));
                end;
    IF c=5 THEN Begin
                writeln('podaj liczbe ktora chcesz spotegowac a nastepnie do ktorej potegi');
                readln(a);
                readln(b);
                potegowanie(a,b);
                writeln('wynik z dodawania wynosi ',potegowanie(a,b));
                end;
    IF c=6 THEN Begin
                writeln('czy chcesz pierwiastek kwadratowy czy inny? K/I');
                readln(d);
                d:=UPCASE(d);
                REPEAT
                IF (d<>'K') AND (d<>'I') THEN Begin
                                              writeln('Ty glupi osle napisz K lub I');
                                              readln(d);
                                              d:=UPCASE(d);
                                              end;
                UNTIL (d='K') OR (d='I');
                IF d='K' THEN Begin
                              writeln('podaj liczbe z ktorej chcesz otrzymac pierwiastek kwadratowy');
                              readln(a);
                              pierwiastkowaniek(a);
                              writeln('wynik z pierwiastkowania kwadratowego wynosi ',pierwiastkowaniek(a));
                              end;
                IF d='I' THEN Begin
                              writeln('podaj liczbe ktora chcesz spierwiastkowac');
                              readln(a);
                              writeln('a teraz ktorego stopnia ma byc pierwiastek');
                              readln(b);
                              pierwiastkowaniex(a,b);
                              writeln('wynik z pierwiastkowania ',b,' stopnia wynosi ',pierwiastkowaniex(a,b));
                              end;
    writeln('czy chcesz jeszcze raz? T/N');
    readln(o);
    o:=UPCASE(o);
    REPEAT
    IF (o<>'T') AND (o<>'N') THEN Begin
                                  writeln('Ty glupi osle napisz T lub N');
                                  readln(o);
                                  o:=UPCASE(o);
                                  end;
    UNTIL (o='T') OR (o='N');
    [b]UNTIL o='N';[/b]
    end.

    W zalaczniku znajduje sie ten program wiec kto chce moze go sciagnac.

    Proszę pamiętać o używaniu znaczników code. - arnoldziq

    0 3
  • Pomocny post
    #3 07 Cze 2010 23:26
    wrych
    Poziom 20  

    Twoje dzieło po poprawkach:

    Code:
    program bartek2;
    
    uses crt;
    VAR a,b,c:integer;
        {o ,d:string;}o, d: char; {!zmiana typu zmiennych}

    {poczatek funkcji}
    function dodawanie(a,b:integer):integer;

    begin
    dodawanie:=a+b;
    end;
    {koniec funkcji}

    {poczatek funkcji}
    function odejmowanie(a,b:integer):integer;

    begin
    odejmowanie:=a-b;
    end;
    {koniec funkcji}

    {poczatek funkcji}
    function mnozenie(a,b:integer):integer;

    begin
    mnozenie:=a*b;
    end;
    {koniec funkcji}

    {poczatek funkcji}
    function dzielenie(a,b:real):real;

    begin
    dzielenie:=a/b;
    end;
    {koniec funkcji}

    {poczatek funkcji}
    function potegowanie(a,b:integer):integer;
    var i:integer;  pot: integer; {!dodatkowa zmienna}

    begin
    pot:=a;
    for i:=2 to b DO pot:=pot*a;
    potegowanie := pot;
    end;
    {koniec funkcji}

    {poczatek funkcji}
    function pierwiastkowaniek(a:real):real;

    begin
    pierwiastkowaniek:=sqrt(a);
    end;
    {koniec funkcji}

    {poczatek funkcji}
    function pierwiastkowaniex(a,b:real):real;

    begin
    b:=1/b;
    pierwiastkowaniex:=Exp(b*Ln(a));
    end;
    {koniec funkcji}

    begin
    REPEAT
    clrscr;
    GOTOXY(25,25);
    writeln('Made by Bartlomiej Dur');
    GOTOXY(1,1);
    writeln('Wybierz jakie dzialanie chcesz wykonac i wpisz liczbe odpowiadajaca');
    writeln('(liczby musza byc wieksze do 0)');
    writeln('1.Dodawanie');
    writeln('2.Odejmowanie');
    writeln('3.Mnozenie');
    writeln('4.Dzielenie');
    writeln('5.Potegowanie');
    writeln('6.Pierwiastkowanie (jeszcze nie skonczone)');
    REPEAT
    readln(c);
    IF (c<>1) AND (c<>2) AND (c<>3) AND (c<>4) AND (c<>5) AND (c<>6) THEN writeln('Ty glupi osle zdecyduj sie jeszcze raz');
    UNTIL  (c=1) OR (c=2) OR (c=3) OR (c=4) OR (c=5) OR (c=6);
    IF c=1 THEN Begin
                writeln('podaj liczby ktore chcesz dodac');
                readln(a);
                readln(b);
                dodawanie(a,b);
                writeln('wynik z dodawania wynosi ',dodawanie(a,b));
                end;
    IF c=2 THEN Begin
                writeln('podaj liczby ktore chcesz odjac');
                readln(a);
                readln(b);
                odejmowanie(a,b);
                writeln('wynik z odejmowania wynosi ',odejmowanie(a,b));
                end;
    IF c=3 THEN Begin
                writeln('podaj liczby ktore chcesz pomnozyc');
                readln(a);
                readln(b);
                mnozenie(a,b);
                writeln('wynik z mnozenia wynosi ',mnozenie(a,b));
                end;
    IF c=4 THEN Begin
                writeln('podaj liczby ktore chcesz podzielic');
                readln(a);
                readln(b);
                dzielenie(a,b);
                writeln('wynik z dodawania wynosi ',dzielenie(a,b));
                end;
    IF c=5 THEN Begin
                writeln('podaj liczbe ktora chcesz spotegowac a nastepnie do ktorej potegi');
                readln(a);
                readln(b);
                potegowanie(a,b);
                writeln('wynik z dodawania wynosi ',potegowanie(a,b));
                end;
    IF c=6 THEN Begin
                writeln('czy chcesz pierwiastek kwadratowy czy inny? K/I');
                readln(d);
                d:=UPCASE(d);
                REPEAT
                IF (d<>'K') AND (d<>'I') THEN Begin
                                              writeln('Ty glupi osle napisz K lub I');
                                              readln(d);
                                              d:=UPCASE(d);
                                              end;
                UNTIL (d='K') OR (d='I');
                End; {! tu zgubiˆe˜ end}
                IF d='K' THEN Begin
                              writeln('podaj liczbe z ktorej chcesz otrzymac pierwiastek kwadratowy');
                              readln(a);
                              pierwiastkowaniek(a);
                              writeln('wynik z pierwiastkowania kwadratowego wynosi ',pierwiastkowaniek(a));
                              end;
                IF d='I' THEN Begin
                              writeln('podaj liczbe ktora chcesz spierwiastkowac');
                              readln(a);
                              writeln('a teraz ktorego stopnia ma byc pierwiastek');
                              readln(b);
                              pierwiastkowaniex(a,b);
                              writeln('wynik z pierwiastkowania ',b,' stopnia wynosi ',pierwiastkowaniex(a,b));
                              end;
    writeln('czy chcesz jeszcze raz? T/N');
    readln(o);
    o:=UPCASE(o);
    REPEAT
    IF (o<>'T') AND (o<>'N') THEN Begin
                                  writeln('Ty glupi osle napisz T lub N');
                                  readln(o);
                                  o:=UPCASE(o);
                                  end;
    UNTIL (o='T') OR (o='N');
    {[b]UNTIL o='N';[/b] - to nie tak, niľej dobrze}
    UNTIL o='N';
    end.

    Błędy zaznaczyłem w komentarzach. Proponuję zmienić fragment kodu
    Code:
    IF (o<>'T') AND (o<>'N') THEN Begin
    
                                  writeln('Ty glupi osle napisz T lub N');
                                  readln(o);
                                  o:=UPCASE(o);
                                  end;

    bo obrażanie użytkownika chyba nie jest celem programu...

    0
  • #4 08 Cze 2010 14:48
    bajtolini
    Poziom 2  

    Teraz dziala, dzieki bardzo za pomoc. Niby racja z tym komentarzem ale jak ktos nie umie napisac 'T' lub 'N' a wyzej jest napisane zeby tak zrobil to nieswiadczy dobrze o jego intelekcie.

    0