Błąd w programie obliczającym pierwiastki f.kwadratowej

0

Jest to mój pierwszy dzień programowania i post na forum także chciałbym przywitać wszystkich użytkowników :)

program funkcjakwadratowa;
var a,b,c,d,x1,x2: integer;
begin
writeln ('ax^2+bc+c=0');
writeln  ('podaj współczynnik a');
readln (a);
writeln ('podaj współczynnik b');
readln (b);
writeln ('podaj współczynnik c');
readln (c);
d:=sqr(b)-4*a*c;
if a=0 then writeln ('to nie jest funkcja kwadratowa');
if d>0 then x1:=(-b+sqrt(d))/(2*a);
end.

Po pierwsze ciągle jest błąd przy pierwiastkowaniu i nie chce dalej ruszyć. Dodatkowo nie wiem jak to kończyć, w sensie mam problem z tymi polecaniami (if,then,else) dlatego jak ktoś by poratował linkiem/wytłumaczył był bym wdzięczny. Widziałem podobne tematy ale nie wiem co robie nie tak że mi nawet spierwiastkować tego nie chce.

0

Tak na szybko to:

  1. Z tego co pamiętam ze szkoły, to wzór powinien być: ax^2 + bX + c
  2. Jesli a = 0, to masz dzielenie przez 0. Po tym ifie a = 0 powinien być jakiś return, wyjscie z programu itp. bo mimo wyswietlenia komunikatu program idzie dalej do if d > 0...
    3. A czy przypadkiem d i x1 nie moze być intem tylko realem? Compiler pewnie wyrzucil jakis blad.
  3. Czym jest x2?

EDIT: Sprawdzilem w kompilatorze online. Rzeczywiscie, pkt. 3 okazał się sednem sprawy.

0
  1. literówka
  2. dziś miałem pierwszy raz z tym styczność i koleś rzucił tylko "macie to zrobić" także nawet nie wiem o czym mówisz. jednakże nawet jak wyrzuciłem dzielenie przez a to wyskakiwał błąd
  3. dzięki za wskazówkę, sprawdzę to
  4. x2 to drugi pierwiastek do którego jeszcze nie doszedłem.

dzięki za pomoc :)

0
program funkcjakwadratowa;
var
  a, b, c, d, x1, x2: Real;
begin
  WriteLn('ax^2+bx+c=0');
  WriteLn('podaj współczynnik a');
  ReadLn(a);
  WriteLn('podaj współczynnik b');
  ReadLn(b);
  WriteLn('podaj współczynnik c');
  ReadLn(c);

  d := sqr(b) - 4 * a * c;

  if d > 0 then
  begin
    x1 := (-b - sqrt(d)) / (2 * a);
    x2 := (-b + sqrt(d)) / (2 * a);
    WriteLn('pierwiastki');
    WriteLn('x1 = ');
    WriteLn('x2 = ');
  end
  else
    if d = 0 then
      x1 := (-b) / (2 * a);

  WriteLn('pierwiastek podwójny');
  WriteLn('x1 = ');
end.

Doszedłem do tego momentu i dalej nie wiem co zrobić. Musze zrobić przypadek jak d<0 i nie ma pierwiastków i a=0 (to nie jest f.kwadratowa). Ktoś coś poradzi?

Edit: Coś takiego? Sry ale kompletnie nie ogarniam pascala a tym bardziej zasad programowania

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