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]Funkcje+procedury, równanie kwadratowe.

Berius24 17 Cze 2011 22:38 2313 13
  • #1 17 Cze 2011 22:38
    Berius24
    Poziom 8  

    Nie kompiluje mi coś jest zle

    Code:
    function rownanie(A:real;B:real;C:real):boolean;
    
     var DELTA:real;
     begin

     if A=0 then
     begin
     Writeln('row. jest liniowe');
     Halt;
     end;

     DELTA:=(B*B)-4*A*C;

     if DELTA=0 then
      Writeln('X1=X2= ',-B/(2*A));

     if DELTA<0 then
      Writeln('row. nie ma pierwiastkow rzeczywistych');

     if DELTA>0 then
     begin
      Writeln('X1= ',(-B-Sqrt(DELTA)/(2*A)));
      Writeln('X2= ',(-B+Sqrt(DELTA)/(2*A)));
     end
     end;

    var A,B,C:real;
    begin
    Writeln('podaj A'); Readln(A);
    Writeln('podaj B'); Readln(B);
    Writeln('podaj C'); Readln(C);

    rownanie(A,B,C);
    end.       

    0 13
  • #2 17 Cze 2011 23:06
    mietekn
    Poziom 35  

    Tak na szybko:
    -"program rownanie_kwadratowe; " w złym miejscu (przenieś na początek)
    -"end" bez średnika
    -przenieś także linie "var A,B,C:real; " by była trzecią linia programu zostawiając samo "A,B,C:real;".
    -skasuj "var x,y,z:integer;"


    Zmieniono:

    Teraz to co napisałem nie ma już najmniejszego sensu. Po co zmieniłeś pierwszy post z pytaniem? Późniejsze odpowiedzi nie mają sensu po tych zmianach.

    0
  • #3 17 Cze 2011 23:25
    Berius24
    Poziom 8  

    Code:
    function rownanie(A:real;B:real;C:real):boolean;
    
     var DELTA:real;
     begin

     if A=0 then
     begin
     Writeln('row. jest liniowe');
     Halt;
     end;

     DELTA:=(B*B)-4*A*C;

     if DELTA=0 then
      Writeln('X1=X2= ',-B/(2*A));

     if DELTA<0 then
      Writeln('row. nie ma pierwiastkow rzeczywistych');

     if DELTA>0 then
     begin
      Writeln('X1= ',(-B-Sqrt(DELTA)/(2*A)));
      Writeln('X2= ',(-B+Sqrt(DELTA)/(2*A)));
     end
     end;

    var A,B,C:real;
    begin
    Writeln('podaj A'); Readln(A);
    Writeln('podaj B'); Readln(B);
    Writeln('podaj C'); Readln(C);

    rownanie(A,B,C);
    end.       

    0
  • #4 18 Cze 2011 10:36
    mietekn
    Poziom 35  

    Proponuje przeczytać dla czego się nie kompiluje.

    0
  • #6 18 Cze 2011 14:17
    Berius24
    Poziom 8  

    poprawiłem kompiluje, potrzebuje dodać procedure do tego, lub przerobić tak równanie kwadratowe ze zamiast funkcji będzie użyta procedura.

    0
  • #7 18 Cze 2011 15:12
    loganek2
    Poziom 16  

    Proszę bardzo:

    Kod: pascal
    Zaloguj się, aby zobaczyć kod

    0
  • #8 18 Cze 2011 16:14
    Berius24
    Poziom 8  

    loganek2 nie działa

    0
  • #9 18 Cze 2011 21:54
    Dżyszla
    Poziom 42  

    Kolega w ogóle wie, co to jest procedura czy funkcja? Tak w ogóle kompletnie nie korzystasz z możliwości funkcji - zachowuje się u Ciebie jak procedura. I bardzo brzydki sposób kończenia programu w niej jest zawarty.

    0
  • #10 18 Cze 2011 22:54
    Berius24
    Poziom 8  

    to moja finalna wersja z funkcjami, coś namieszałem z endami tylko nie wiem co.

    Code:
    function rownanie(A:real;b:real;c:real):boolean;
    
    Var x1, x2, d, x : Real;
    begin
    write('podaj a=');
    readln(a);
    write('podaj b=');
    readln(b);
    write('podaj c=');
    readln(c);
    if a=0 then
    begin
    Writeln('Rozwiazywanie funkcji liniowej');
    if (b=0) and (c<>0) then
    Writeln('Brak rozwiazan');
    if (b<>0) and (c<>0) then
    begin
    x:=(-c)/b;
    Writeln('Rozwiaenie x=',x:2:2);
    end;
    if (b=0) and (c=0) then writeln('Rownanie nieoznaczone - nieskonczenie wiele rozwiazan');
    if (b<>0) and (c=0) then writeln('Rozwiazaniem rownania jest liczba 0');
    readln;
    end
    else
    begin
    d:=(b*b)-4*a*c;
    if d>0 then
    begin
    x1:=(-b-sqrt(d))/2*a;
    x2:=(-b+sqrt(d))/2*a;
    writeln('rozwiazania:');
    writeln('x1=', x1:2:2);
    writeln('x2=', x2:2:2);
    end;
    if d<0 then writeln('brak rozwiaza');


    if d=0 then
    begin
    x:=(-b)/2*a;
    writeln('rozwiazanie=', x:2:2);
    end
    readln ;
    end;
    end.

    0
  • #11 26 Cze 2011 17:47
    elektrod12
    Poziom 8  

    za mało endów powinno ich być tyle co begin

    Dodano po 2 [minuty]:

    Berius24 napisał:
    to moja finalna wersja z funkcjami, coś namieszałem z endami tylko nie wiem co.
    Code:
    function rownanie(A:real;b:real;c:real):boolean;
    
    Var x1, x2, d, x : Real;
    begin
    write('podaj a=');
    readln(a);
    write('podaj b=');
    readln(b);
    write('podaj c=');
    readln(c);
    if a=0 then
    begin
    Writeln('Rozwiazywanie funkcji liniowej');
    if (b=0) and (c<>0) then
    Writeln('Brak rozwiazan');
    if (b<>0) and (c<>0) then
    begin
    x:=(-c)/b;
    Writeln('Rozwiaenie x=',x:2:2);
    end;


    if (b=0) and (c=0) then writeln('Rownanie nieoznaczone - nieskonczenie wiele rozwiazan');
    if (b<>0) and (c=0) then writeln('Rozwiazaniem rownania jest liczba 0');
    readln;
    end
    else
    begin
    d:=(b*b)-4*a*c;
    if d>0 then
    begin
    x1:=(-b-sqrt(d))/2*a;
    x2:=(-b+sqrt(d))/2*a;
    writeln('rozwiazania:');
    writeln('x1=', x1:2:2);
    writeln('x2=', x2:2:2);
    end;

    if d<0 then writeln('brak rozwiaza');


    if d=0 then
    begin
    x:=(-b)/2*a;
    writeln('rozwiazanie=', x:2:2);
    end
    readln ;
    end;
    end;
    end;
    end.

    0
  • #14 27 Cze 2011 12:41
    Chris_W
    Poziom 36  

    Podstawowe pytanie na które nie uzyskano odpowiedzi (mimo prośb o podanie) to jaki jest komunikat kompilatora - w skrócie dlaczego nie kompiluje. Wystarczy znać jako tako angielski aby po treści komunikatu zorientować się w przyczynie błędu.

    0