// PascalABC.NET 3.2, сборка 1416 от 26.03.2017 // Внимание! Если программа не работает, обновите версию!
function cx(x:real):string; begin if frac(x)=0 then case Trunc(x) of 0: Result:=''; 1: Result:='*exp(x)'; -1:Result:='*exp(-x)' else Result:='*exp('+x+'x)' end else Result:='*exp('+x+'x)' end;
function cx1(x:real):string; begin if frac(x)=0 then case Trunc(x) of 1: Result:=''; -1:Result:='-' else Result:=x.ToString end else Result:=x.ToString end;
begin var b,c:real; Writeln('Введите коэффициенты уравнения y+by''+cy=0'); Read(b,c); var d:=b*b-4*c; if d>0 then begin d:=sqrt(d); var x1:=(-b-d)/2; var x2:=(-b+d)/2; Writeln('y=c1',cx(x1),'+c2',cx(x2)) end else if d=0 then begin var x:=-b/2; if x=0 then Writeln('y=c1+c2*x') else Writeln('y=c1',cx(x),'+c2*x',cx(x)) end else begin var re:=-b/2; var im:=sqrt(-d)/2; if re=0 then Writeln('y=c1*cos(',cx1(im),'x)+c2*sin(',cx1(im),'x)') else Writeln('y=exp(',cx1(re),'x)*(c1*cos(',cx1(im), 'x)+c2*sin(',cx1(im),'x))') end end.
# Код на ruby 2.2.3p173 def zadanie(line, time) line = line.gsub(/[^MD]/, "") time.times { |i| k = 0 while k < line.size - 1 do if line[k..k + 1] == "MD" line[k], line[k + 1] = line[k + 1], line[k] k+=1 end k+=1 end p [i+1,line] } return line end # # Примеры применения p zadanie("DMMDMDMDMMMDMMMM", 9)
// Внимание! Если программа не работает, обновите версию!
function cx(x:real):string;
begin
if frac(x)=0 then
case Trunc(x) of
0: Result:='';
1: Result:='*exp(x)';
-1:Result:='*exp(-x)'
else Result:='*exp('+x+'x)'
end
else Result:='*exp('+x+'x)'
end;
function cx1(x:real):string;
begin
if frac(x)=0 then
case Trunc(x) of
1: Result:='';
-1:Result:='-'
else Result:=x.ToString
end
else Result:=x.ToString
end;
begin
var b,c:real;
Writeln('Введите коэффициенты уравнения y+by''+cy=0');
Read(b,c);
var d:=b*b-4*c;
if d>0 then begin
d:=sqrt(d);
var x1:=(-b-d)/2;
var x2:=(-b+d)/2;
Writeln('y=c1',cx(x1),'+c2',cx(x2))
end
else
if d=0 then begin
var x:=-b/2;
if x=0 then Writeln('y=c1+c2*x')
else Writeln('y=c1',cx(x),'+c2*x',cx(x))
end
else begin
var re:=-b/2;
var im:=sqrt(-d)/2;
if re=0 then Writeln('y=c1*cos(',cx1(im),'x)+c2*sin(',cx1(im),'x)')
else Writeln('y=exp(',cx1(re),'x)*(c1*cos(',cx1(im),
'x)+c2*sin(',cx1(im),'x))')
end
end.
Примеры
Введите коэффициенты уравнения y''+by'+cy=0
-2 10
y=exp(x)*(c1*cos(3x)+c2*sin(3x))
Введите коэффициенты уравнения y''+by'+cy=0
-4 3
y=c1*exp(x)+c2*exp(3x)
def zadanie(line, time)
line = line.gsub(/[^MD]/, "")
time.times { |i|
k = 0
while k < line.size - 1 do
if line[k..k + 1] == "MD"
line[k], line[k + 1] = line[k + 1], line[k]
k+=1
end
k+=1
end
p [i+1,line]
}
return line
end
# # Примеры применения
p zadanie("DMMDMDMDMMMDMMMM", 9)
Вывод
[1, "DMDMDMDMMMDMMDMDDDMM"]
[2, "DDMDMDMMMDMMDMDMDDMM"]
[3, "DDDMDMMMDMMDMDMDMDMM"]
[4, "MMMDMMDMDMDMDMMM"]
[5, "MMDMMDMDMDMD"]
[6, "MDMMDMDMDMD"]
[7, "MMDMDMDMD"]
[8, "MDMDMDMD"]
[9, "MDMDMD"]
"MDMDMD"