Vypočíta korene kvadratickej rovnice a vykreslí graf
Delphi & Pascal (česká wiki)
Kategórie: KMP (Programy mladých programátorů)
Program: Kvadrat4.pas
Soubor exe: Kvadrat4.exe
Program: Kvadrat4.pas
Soubor exe: Kvadrat4.exe
Tento program zo zadaných koeficientov a, b,c vypočíta korene kvadratickej rovnice, upraví rovnicu na štvorec a vykreslí graf funkcie (pozor si treba dat hlavne na to, že pri vykresľovaní grafu sa môžu zadať len celé čísla a os y smeruje trochu netypicky k dolnému okraju obrazovky).
{ KVADRAT4.PAS Copyright (c) ... } { } { Tento program zo zadanych koeficientov a, b,c vypocita korene } { kvadratickej rovnice, upravi rovnicu na stvorec a vykresli graf } { funkcie (pozor si treba dat hlavne na to, ze pri vykreslovani } { grafu sa mozu zadat len cele cisla a os y smeruje trochu } { netypicky k dolnemu okraju obrazovky). } { } { Author: Neznamy } { Date : 16.10.2008 http://www.trsek.com } program kvadratickarovnica; uses grafika; var a,b,c,d,x,x1,x2,e,f,g,h,i:real; z,y,a2,b2,c2,x0,y0,o,xk,yk:integer; begin writeln('zadaj a'); read(a); if a=0 then repeat begin writeln('zadaj inu hodnotu a(pre a=0 straca rovnica svoj kvadraticky charakter)'); read(a); end until a<>0; writeln('zadaj b'); read(b); writeln('zadaj c'); read(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('hodnota korenov kvadratickej rovnice (x1 a x2) je',x1:7:2,' a ',x2:7:2); end else if d=0 then begin x:=-b/2*a; writeln('hodnota dvojnasobneho korena kvadratickej rovnice x je',x:7:2); end else writeln('pre tieto hodnoty a,b,c nema kvadraticka rovnica v obore realnych cisel riesenie'); writeln; writeln('tvar vasej rovnice je:',' ',a:1:2,'sqr(x)+(',b:1:2,')x+(',c:1:2,')=0'); writeln; writeln('alebo:',a:1:2,'*(x-(',x1:1:2,'))*(x-(',x2:1:2,'))=0'); writeln; writeln('po uprave na stvorec:'); e:=(a*sqr(f)+b*f+c)-sqr(f+b/2); if b>0 then begin writeln('(sqr(x+',b/2:1:2,'))+(',e:1:2,')'); end else begin writeln('(sqr(x',b/2:1:2,'))+(',e:1:2,')'); end; writeln; writeln('vrchol paraboly ma suradnice: (',-b/2:1:2,',',e:1:2,')'); g:=(sqr(b/2)+e); writeln('priesecnik s osou y je:(0,',g:1:2,')'); {if e>=0 then begin h:=-b/2+sqrt(e); i:=-b/2-sqrt(e); writeln('priesecniky s osou x su:(',h:1:0,',0) a (',i:1:0,',0)'); end else} writeln('priesecniky s osou x su:(',x1:1:2,',0) a (',x2:1:2,',0)'); writeln('graf kvadratickej rovnice je:'); writeln('ak chces poznat aj graf funkcie tak znova zadaj a,b,c:'); writeln('zadaj a(len celociselne)'); readln(a2); if a2=0 then repeat begin writeln('zadaj inu hodnotu a(pre a=0 straca rovnica svoj kvadraticky charakter)'); read(a2); end until a<>0; writeln('zadaj b(len celociselne)'); readln(b2); writeln('zadaj c(len celociselne)'); readln(c2); writeln('zadaj rozsah grafu(len celociselny)'); readln(o); x0:=-o-1; y0:=a2*sqr(-o-1)+b2*(-0-1)+c2;{zaciatocne suradnice paraboly} xk:=o+1; yk:=a2*sqr(o+1)+b2*(o+1)+c2;{konecne suradnice paraboly} for z:=-o to o do begin y:=a2*sqr(z)+b2*z+c2; filledcircle(z+500,y+300,1); line(x0+500,y0+300,z+500,y+300); x0:=z; y0:=y; end; line(xk,yk,z,y); line(400,300,600,300);{os x} line(500,200,500,450);{os y} line(595,305,600,300); line(595,295,600,300);{sipka x} line(602,307,608,313); line(608,307,602,313);{nakreslene x} line(495,445,500,450); line(505,445,500,450);{sipka y} line(511,455,508,452); line(511,455,514,452); line(511,455,511,459);{nakreslene y} end.