// PascalABC.NET 3.2, сборка 1485 от 15.06.2017 // Внимание! Если программа не работает, обновите версию!
uses graphABC;
function f(x:real):=6*Power(6*sqr(x-2),1/3)/(x*x+8);
begin (var w,var h):=(1000,600); SetWindowSize(w,h); // поле для графика в окне (var xLeft,var yLeft):=(50,50); (var xRight,var yRight):=(w-xLeft,h-yLeft); // интервалы по осям (var ax,var bx,var hx):=(-12.0,12.0,1.0); (var ay,var by,var hy):=(0.0,3.0,0.5); // масштабы по осям var mx:=(xRight-xLeft)/(bx-ax); var my:=(yRight-yLeft)/(by-ay); // точка начала координат графика var x0:=xLeft+Trunc(abs(ax)*mx); var y0:=yRight-Trunc(abs(ay)*my); // рисование координатных осей Line(xLeft,y0,xRight+10,y0); Line(x0,yLeft-10,x0,yRight); SetFontSize(12); SetFontColor(clBlue); TextOut(xRight+15,y0-10,'X'); TextOut(x0-4,yLeft-30,'Y'); SetFontSize(8); SetFontColor(clGreen); // рисование засечек var s:string; for var i:=1 to Round((bx-ax)/hx)+1 do begin var num:=ax+(i-1)*hx; var x:=xLeft+Trunc(mx*(num-ax)); Line(x,y0-3,x,y0+3); if abs(num)>1E-15 then TextOut(x-TextWidth(s) div 2,y0+10,num.ToString) end; for var i:=1 to Round((by-ay)/hy)+1 do begin var num:=ay+(i-1)*hy; var y:=yRight-Trunc(my*(num-ay)); Line(x0-3,y,x0+3,y); if abs(num)>1E-15 then TextOut(x0+7,y-TextHeight(s) div 2,num.ToString) end; TextOut(x0-10,y0+10,'0'); // собственно график var xi:=ax; while xi<=bx do begin var yi:=f(xi); var x:=x0+Round(xi*mx); var y:=y0-Round(yi*my); if (y>=yLeft) and (y<=yRight) then SetPixel(x,y,clRed); xi+=1e-3 end end.
Много лишнего(наверно), только с олимпиады!Как есть. uses crt; var b,n,i,k,c,o,x1:integer; f,s,ch:string; r,g: text; A:array [0..9] of integer; begin assign (r,'C:\Bin.txt'); reset (r); readln (r,f); close (r); for i:=1 to length(f) do begin s:=copy(f,1,1); if (s<>'0') or (s<>'1') or (s<>'2') or (s<>'3') or (s<>'4') or (s<>'5') or (s<>'6') or (s<>'7') or (s<>'8') or (s<>'9')then delete(f,1,1); if (s='0') or (s='1') or (s='2') or (s='3') or (s='4') or (s='5') or (s='6') or (s='7') or (s='8') or (s='9')then begin x1:=pos(s,ch); if x1<>0 then begin delete(ch,x1,1); ch:=ch+s; end else ch:=ch+s; end; end; val(ch,n,o); N := Abs(N); for i := 0 to 9 do A[ i ] := 0; while N > 0 do begin Inc(A[ N mod 10]); N := N div 10; end; assign (g,'C:\Bout.txt'); rewrite (g); for i := 0 to 9 do while A[ i ] > 0 do begin Write(g,i); Dec(A[ i ]); end; close(g); end.
Много лишнего(наверно), только с олимпиады!Как есть. uses crt; var b,n,i,k,c,o,x1:integer; f,s,ch:string; r,g: text; A:array [0..9] of integer; begin assign (r,'C:\Bin.txt'); reset (r); readln (r,f); close (r); for i:=1 to length(f) do begin s:=copy(f,1,1); if (s<>'0') or (s<>'1') or (s<>'2') or (s<>'3') or (s<>'4') or (s<>'5') or (s<>'6') or (s<>'7') or (s<>'8') or (s<>'9')then delete(f,1,1); if (s='0') or (s='1') or (s='2') or (s='3') or (s='4') or (s='5') or (s='6') or (s='7') or (s='8') or (s='9')then begin x1:=pos(s,ch); if x1<>0 then begin delete(ch,x1,1); ch:=ch+s; end else ch:=ch+s; end; end; val(ch,n,o); N := Abs(N); for i := 0 to 9 do A[ i ] := 0; while N > 0 do begin Inc(A[ N mod 10]); N := N div 10; end; assign (g,'C:\Bout.txt'); rewrite (g); for i := 0 to 9 do while A[ i ] > 0 do begin Write(g,i); Dec(A[ i ]); end; close(g); end.
// Внимание! Если программа не работает, обновите версию!
uses graphABC;
function f(x:real):=6*Power(6*sqr(x-2),1/3)/(x*x+8);
begin
(var w,var h):=(1000,600);
SetWindowSize(w,h);
// поле для графика в окне
(var xLeft,var yLeft):=(50,50);
(var xRight,var yRight):=(w-xLeft,h-yLeft);
// интервалы по осям
(var ax,var bx,var hx):=(-12.0,12.0,1.0);
(var ay,var by,var hy):=(0.0,3.0,0.5);
// масштабы по осям
var mx:=(xRight-xLeft)/(bx-ax);
var my:=(yRight-yLeft)/(by-ay);
// точка начала координат графика
var x0:=xLeft+Trunc(abs(ax)*mx);
var y0:=yRight-Trunc(abs(ay)*my);
// рисование координатных осей
Line(xLeft,y0,xRight+10,y0);
Line(x0,yLeft-10,x0,yRight);
SetFontSize(12); SetFontColor(clBlue);
TextOut(xRight+15,y0-10,'X');
TextOut(x0-4,yLeft-30,'Y');
SetFontSize(8); SetFontColor(clGreen);
// рисование засечек
var s:string;
for var i:=1 to Round((bx-ax)/hx)+1 do begin
var num:=ax+(i-1)*hx;
var x:=xLeft+Trunc(mx*(num-ax));
Line(x,y0-3,x,y0+3);
if abs(num)>1E-15 then TextOut(x-TextWidth(s) div 2,y0+10,num.ToString)
end;
for var i:=1 to Round((by-ay)/hy)+1 do begin
var num:=ay+(i-1)*hy;
var y:=yRight-Trunc(my*(num-ay));
Line(x0-3,y,x0+3,y);
if abs(num)>1E-15 then TextOut(x0+7,y-TextHeight(s) div 2,num.ToString)
end;
TextOut(x0-10,y0+10,'0');
// собственно график
var xi:=ax;
while xi<=bx do begin
var yi:=f(xi);
var x:=x0+Round(xi*mx);
var y:=y0-Round(yi*my);
if (y>=yLeft) and (y<=yRight) then SetPixel(x,y,clRed);
xi+=1e-3
end
end.