Problem z równaniem liniowym: free pascal, windows 7


(alabama1) #1

Nie wiem, czy mi się kod wkleił, chyba nie.

Nie wkleił, więc przepisuję.

program liniowka;

uses crt;

var

a,b,c,x:real;

begin

clrscr;

writeln('Podaj a');

readln(a);

if a=0 then writeln('Podaj współczynnik b');

readln(b);

if b=0 then writeln('Nieskończenie wiele rozwiązań')

else

begin

writeln('Brak rozwiązań')

end

else begin

x:=-b/a;

writeln('Rozwiązaniem równania jest ',x:4:2);

end;

end;

readln;

end.

Problem podobny, jak z równaniem kwadratowym. Rzecz polega na tym, że nie za bardzo rozumiem wprowadzanie warunków. O ile takie proste, to nie ma problemu, ale jak na przykład w moim programie: wprowadzam a:jeśli jest 0, to mogą być dwie możliwości:brak rozwiązań lub nieskończenie wiele rozwiązań. I nie wiem właśnie, jak połączyć te dwie możliwości z a=0 z możliwością, gdy a nierówne 0. Wyjaśnicie mi zasadę? Bo coś zauważyłem, że trzeba dawać nowe begin i end, a z tego, co ja wiem, to trzeba dawać przy pętlach while i for. Więcej zastosowań wprowadzenia nowego begin i end nie znam.


(B.Andy) #2

Może najpierw przynajmniej poczytaj jakieś kursy (pierwsze wyniki z google): http://turbopascal.skryptoteka.pl/ http://www.pascal.eu.org/ http://main.edu.pl/pl/user.phtml?op=show&page=pascal

Albo jeszcze lepiej jakąś książkę... Co z tego jeśli ktoś Ci napisze rozwiązanie, jak kolejnego zadania znów nie rozwiążesz...


(alabama1) #3

W poście właśnie pytałem o zasadę, bo widzę, że tego nie rozumiem. Żadnego gotowca nie chcę.


(klemensior15) #4
if warunek then

begin

//tutaj wszystko co chcesz aby wykonało się dla tego warunku

end

else if warunek then

begin

//tutaj dla warunku innego niż w pierwszym

end

else

begin

//tutaj dla wszystkich pozostałych

end

Warunki możesz łączyć m.in. AND (i) OR (lub) np.

if (a > 0) AND (a <10) then //wykona się jeśli a jest większe od 0 i mniejsze od 10.

O coś takiego ci chodzi czy jeszcze innego ponieważ dość ciężko mi rozczytać z czym masz problem.


(alabama1) #5

To akurat z łączeniem warunków rozumiem. Chodziło mi właśnie o ten pierwszy wzór, nie wiedziałem, jak stosować warunek w warunku. Dzięki, program działa.

program liniowka;

uses crt;

var

        a,b,x:real;

begin

        clrscr;

        writeln('Podaj wsp˘czynnik a r˘wnania liniowego');

        readln(a);

        if a=0 then

                begin

                        writeln('Podaj wsp˘czynnik b r˘wnania liniowego');

                        readln(b);

        if b=0 then

                        writeln('R˘wnanie ma nieskoäczenie wiele rozwiĄzaä')

                else

                        writeln('Brak rozwiĄzaä')

                        end

        else begin

        writeln('Podaj b');

        readln(b);

        x:=(-b)/(a);

        writeln('RozwiĄzaniem r˘wnania jest ',x:4:2);

        end;

readln;

end.

Jedna rzecz mnie tylko zastanawia- gdy rozwiązaniem jest 0, to pokazuje -0...


(kostek135) #6

Tu masz odpowiedź dlaczego tak się dzieje http://pl.wikipedia.org/wiki/Liczba_zmiennoprzecinkowa

A w skrócie np. 5.33, to nie jest 5.33.