Segítene valaki pascalban 3-ad fokú egyenletre programot írni?
Igazából csak az elejében kéne segítség h hogyan tudom áttalakítani másodfokúvá.onnantól kezdve már megy.
így csinálnám:
program usergraph;
var a,b,c D:integer;
x1,x2:real;
begin
write('a= '); readln(a);
write('b= ' ); readln(b);
write('c= ' ); readln(c);
D:=b*b-a*a*c;
if D>0 then begin x1=(-b+sqrt (D))/(2*a);
x2(-b-sqrt(D))/(2*a);
writeln( 'x1= ' , x1:0:2);
writeln('x2= ', x2:0:2);
end
else if D=0 then begin
x1=-b/(2*a);
writeln('x= ', x1:0:2);
end
else writeln ('nincs megoldas ');
readln;
end.
Nah ezt kéne vmivel kiegészíteni fent h a 3-adfokubol másodfoku legyen és....A segítséget megköszönném!!
"Igazából csak az elejében kéne segítség h hogyan tudom áttalakítani másodfokúvá.onnantól kezdve már megy."
Átalakítani? Ha átalakítod az egy másik egyenlet más megoldással, véletlenül ha ugyan az a megoldás.
Ha másodfokúra visszavezethetőre-t akartál írni, amit tanítanak középiskolába, akkor az a rossz hírem van hogy
egy véletlenszerűen felírt harmadfokú egyenlet igen valószínű hogy nem vezethető vissza másodfokúra, amiket adnak feladatot visszalehet azok direkt olyan, iskolapéldák alias gyógyfeladatok.
"A harmadfokú egyenlet valós megoldásait a megoldóképlettel csak úgy találhatjuk meg, ha a számítás során kilépünk a valós számkörből és, ha csak átmenetileg is, de belépünk a komplex számok világába. A harmadfokú egyenlet megoldásának ennélfogva igen nagy a tudománytörténeti jelentősége."
Harmadfokú egyenlet megoldóképlete:
Remélem nem haragszol meg ha azt írom hogy szerintem kicsi vagy ehhez egyenlőre, úgy értem zöldfülű.
"Hát a matek tanárom adta ezt a feladatot- aki nem ért a programozáshoz."
Te értesz hozzá? Legalább olyan kódot írj ami fordítható, csomó helyen szintaxis hiba miatt "sikít" a fordító.
Szintaktikus hiba nélkül:
program usergraph;
var a,b,c,D:integer;
x1,x2:real;
begin
write('a= '); readln(a);
write('b= ' ); readln(b);
write('c= ' ); readln(c);
D:=b*b-a*a*c;
if D>0 then begin x1:=(-b+sqrt (D))/(2*a);
x2:=(-b-sqrt(D))/(2*a);
writeln( 'x1= ' , x1:0:2);
writeln('x2= ', x2:0:2);
end
else if D=0 then begin
x1:=-b/(2*a);
writeln('x= ', x1:0:2);
end
else writeln ('nincs megoldas ');
readln;
end.
Persze nem jó a program
a= 1
b= 2
c= 3
x1= -0.50
x2= -1.50
Ezt adja eredményül, ami nem jó.
Ha a matektanárod adta akkor mit mondott, pontosan mit kell csinálnia a programnak? Ha egyszerűen csak harmadfokú egyenlet kell megoldani arra ott a képlet.
Írj rá példát hogy miből mit kéne csinálnia!
20:13
A programot megírni megoldóképlet segítségével a legegyszerűbb.
"A programot megírni megoldóképlet segítségével a legegyszerűbb."
Az hogy legegyszerűbb nem azt jelenti hogy egyszerű is hanem azt hogy bárhogy máshogy bonyolultabb. Meg bírnám írni megoldóképlettel de ahhoz ki kell lépni a valós számok halmazából, nincs komplex szám a pascal-ba, kéne csinálni komplex szám osztályt stb. Pepecs munka lenne, de elragadtattam magam, nem azt kéri a tanár hogy minden harmadfokú egyenletet meg tudjon oldani csak olyat ami visszavezethető másodfokúra, vagy esetleg egyéb egyszerűbb esetekben megoldható.
Megírtam egy másodfokú megoldó függvényt a,b,c számok a függvény bemenete, kimenete egy rekord amibe a megoldásokat rakja, free pascal-ba működik. A függvény nem tud semmit csak amit kap 3 számot, nincs semmi előfeltétele hogy használd másik függvényen belül akár.
Van egy EgyenletMegoldasKiir eljárás ez sem tud semmit csak azt hogy egy rekordot kap bemenetnek, fogalma sincs honnan jött a rekord (az "égből") e szerint ír a képernyőre. Vagyis a masodfokuMegoldo függvény kimenetét átadtam a EgyenletMegoldasKiir függvény bemenetének. (Ezt az elvet a procedurális iteratív programozás egyik alappillérének tartok.)
Igazából nemigen kell foglalkozni hogy működik a masodfokuMegoldo függvény, elég azt tudni hogy mit csinál, milyen bemenetből milyen kimenetet csinál.
Lehet íni harmadfokú megoldót is ami megfelelően felparaméterezve meghívja a másodfokú megoldót (a másodfokú megoldón nem kell változtatni), persze nem lehet tökéletesen megcsinálni középiskolai ismerettel amit már írtam, de nem is az a cél.
Írtad hogy nem tudod kimásolni azért vannak ilyen hibák a kódba. Meg kell keresni a pas fájlt meg lehet nyitni jegyzettebbel is, azzal ki tudod másolni legközelebb, vagy fordítva jegyzettebbel hozol létre pas fájlt pl ha ki akarod próbálni amit írtam.
Itt van néhány hasznos leírás: [link]
Itt meg a program amit írtam: [link]
Kicsit "emészd" a kódot, ha bármi kérdésed van írj! Megnézhetjük majd a 3-adfokú megoldását is, másodfokúra visszavezetését, de előbb ezt próbáld megérteni!
Azta, hát kössz szépen!!Tényleg nagyon rendes v h elkészítetted.Hát ezzel elleszek 1 darabig. :) Amúgy ezt a szintet középiskolán aligha elvárja valaki.(persze csak ha tudja miről van szó)Megmutattam a tanárnak,(természetesen nem mondtam h én készítettem)nagyot nézett aztán azt mondta h nah jólvan nem kell több programit írni. (beszélt az infótanárral h miket fogunk csinálni és mit tudhatunk)
neked még 1-szer köszönöm és a másodfokú visszavezetést majd esetleg pár év mulva.
"Azta, hát kössz szépen!!Tényleg nagyon rendes v h elkészítetted.Hát ezzel elleszek 1 darabig. :)"
Nagyon szívesen. :)
"Amúgy ezt a szintet középiskolán aligha elvárja valaki.(persze csak ha tudja miről van szó)"
Elhiszem, nekem egyetemi szintű ismeretem van programozás, programozás elmélet terén.
"neked még 1-szer köszönöm és a másodfokú visszavezetést majd esetleg pár év mulva."
Amikor úgy érzed hogy eljött az ideje. :) Viszont azt kihangsúlyozom, lehet hogy félreérthetően fogalmaztam:"A programot megírni megoldóképlet segítségével a legegyszerűbb."
"Azta, hát kössz szépen!!Tényleg nagyon rendes v h elkészítetted.Hát ezzel elleszek 1 darabig. :) "
Nagyon szívesen. :)
"Amúgy ezt a szintet középiskolán aligha elvárja valaki.(persze csak ha tudja miről van szó)"
Elhiszem, nekem egyetemi szintű ismeretem van programozásból, programozás elméletből.
"neked még 1-szer köszönöm és a másodfokú visszavezetést majd esetleg pár év mulva."
Ha úgy érzed eljött az ideje.
Lehet hogy félreérthetően fogalmaztam: "A programot megírni megoldóképlet segítségével a legegyszerűbb." Ez abban az esetben igaz, hogy ha a legkülönbözőbb "trükkös" esetbe is működnie kell, különben ha csak egyszerűbb esetere hogy működjön van egyszerűbb módja. pl x^3-125=0
ez részletesen kiírva 1*x^3+0*x^2+x+0=0 vagyis
a=1 b=0 c=0 d=-125 (természetesen itt d nem a diszkriminánst jelenti) ekkor a valós megoldás köbgyök 125 ami 5 stb.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!