dentinnsmr467
?>

ОЧЕНЬ Решить задачу: Решить задачу с использованием функции Concat Описать строковую константу k=‘Кабинет’ и строковую переменную pred. Ввести с клавиатуры название предмета (в нужном падеже Получить в переменной res полное название кабинета.

Информатика

Ответы

Bogdanov
Числа Фибоначчи определяются следующим образом:
F_0=1; \ F_1=1; \ F_n=F_{n-1}+F_{n-2}, \ n\geqslant2, \ n\in \mathbb Z
Для перехода от математической записи к записи, пригодной для алгоритмизации (и программирования), нужно представить число Фибоначчи в виде некоей функции F(n) и уже эту функцию программировать. Такое представление получить в данном случае очень просто.
F(n)=\left\{\begin{matrix}
1 & & n=0,1 \\ F(n-1)+F(n-2) & & n\geqslant2, \ n\in \mathbb Z
\end{matrix}\right.

Поскольку в функции присутствует определение её значения через обращение к ней же, мы можем говорить о рекурсивном определении функции.
Рекурсия программируется либо непосредственно (это быстро, наглядно, но часто сопряжено с большими расходами вычислительных ресурсов), либо путем сведения к итерации (это существенно менее наглядно, может быть затруднено алгоритмически, но эффективно при выполнении). Поскольку в задании говорится о рекурсии, выбираем рекурсивный алгоритм.

1. Очень короткая реализация
// PascalABC.NET 3.1, сборка 1250 от 28.05.2016
function Fib(n:integer):integer:=(n<2?1:Fib(n-1)+Fib(n-2));

begin
  Writeln(Fib(ReadInteger('n=')))
end.

Тестовое решение
n= 20
10946

2. Более традиционная реализация
// PascalABC.NET 3.1, сборка 1250 от 28.05.2016
function Fib(n:integer):integer;
begin
  if n<2 then Result:=1
  else Result:=Fib(n-1)+Fib(n-2)
end;

begin
  Writeln(Fib(ReadInteger('n=')))
end.

3. Тупо-школьная реализация
// PascalABC.NET 3.1, сборка 1250 от 28.05.2016
function Fib(n:integer):integer;
begin
  if n<2 then Fib:=1
  else Fib:=Fib(n-1)+Fib(n-2)
end;

var
  n:integer;
begin
  Write('n='); Read(n);
  Writeln(Fib(n))
end.

Как хорошо видно, по мере деградации уровня программирования программа становится длиннее, но ни в коем случае ни яснее, ни эффективнее.
Inozemtseva Korolev1271
Ваша небрежность при записи задания привела к необходимости составить решение для двух выражений.
F_1(x)=sin(x^2)+cos(x^2)-10x \\ F_2(x)=sin^2x+cos^2x-10x=1-10x
Соответственно, были найдены два корня.

// PascalABC.NET 3.1, сборка 1250 от 28.05.2016
function f1(x:real):=sin(x*x)+cos(x*x)-10*x;

function f2(x:real):=1-10*x;

function Root(a,b,eps:real; f:real->real):real;
begin
  var x,fx:real;
  var fa:=f(a);
  if abs(fa)<=eps then Result:=a
  else begin
    var fb:=f(b);
    if abs(fb)<=eps then Result:=b
    else
      if fa*fb>0 then Result:=0/0
      else
        repeat
          x:=(a+b)/2;
          fx:=f(x);
          if abs(fx)<=eps then Result:=x
          else
            if fa*fx>0 then a:=x else b:=x;
        until abs(fx)<=eps
    end
end;

begin
  var eps:=ReadReal('Введите точность решения:');
  Writeln('r1=',Root(0,1,eps,f1));
  Writeln('r2=',Root(0,1,eps,f2))
end.

Тестовое решение
Введите точность решения: 1e-7
r1=0.10101518034935
r2=0.0999999940395355

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

ОЧЕНЬ Решить задачу: Решить задачу с использованием функции Concat Описать строковую константу k=‘Кабинет’ и строковую переменную pred. Ввести с клавиатуры название предмета (в нужном падеже Получить в переменной res полное название кабинета.
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

Playintim405374
info122
Eduardovich
Irina_Nevretdinova1630
ali13zakup5064
Шиморянов Мария1866
Валентина980
ludmila-malev280
deadnobody
mdclcompany
Timurr007
whitewhit90
Allahverdi_Мария475
nsn-2012
Игоревна Худанов1150