Keresés

Aktív témák

  • DKristof

    csendes tag

    válasz huntermati #74 üzenetére

    Érdemes szerintem a diszkriminánst külön változóba kitenni, többek közt akkor a zárójelet is nehezebb elrontani.
    Sőt, én a két eredményt is először kiraknám egy változóba, így jóval hosszabb ugyan a kód, de átláthatóbb és könnyebben bővíthető.

    Egy klasszikus "pascal-os" kód szerintem valahogy így nézne ki:

    program MasodFok;

    var
    A , B , C , { egyutthatok }
    D , { diszkriminans }
    X1 , X2 : Real; { megoldasok }
    Mo : Integer; { megoldasok szama }

    begin
    { beolvasas }
    ReadLn(A , B , C);

    { ellenorzes: masodfoku? }
    if A <> 0
    then
    begin
    { diszkriminans }
    D := sqr(b) - (4*a*c);

    if D > 0
    then
    begin
    { ket valos gyok van }
    Mo := 2;
    X1 := (-b + sqrt(d)) / (2*a);
    X2 := (-b - sqrt(d)) / (2*a);
    end
    else if D = 0
    then
    begin
    { egy valos gyok van }
    Mo := 1;
    X1 := -b / (2*a);
    end
    else
    { nincs valos gyok }
    Mo := 0;

    { eredmeny kiirasa }
    case Mo of
    0 : WriteLn('Az egyenletnek nincsen valos gyoke');
    1 : WriteLn('Az egyenletnek egy valos gyoke van: ' , X1:12:4);
    2 : WriteLn('Az egyenletnek ket valos gyoke van: ' , X1:12:4 , X2:12:4);
    end;
    end
    else
    WriteLn('A megadott egyenlet nem masodfoku');

    ReadLn;
    end.

  • Karma

    félisten

    válasz huntermati #74 üzenetére

    Rosszul zárójeleztél. A helyes képlet (-b ± sqrt(b^2 - 4ac)) / 2a.
    De ha már itt tartunk, nem ártana ellenőrizni a determinánst, mielőtt nullával osztasz.

    A "szam1-2-3" változók helyett lehet, hogy az a, b, c beszédesebb és átláthatóbb lenne.

Aktív témák