Задания
Версия для печати и копирования в MS Word
Тип Д21 № 3752
i

Опре­де­ли­те, какое число будет на­пе­ча­та­но в ре­зуль­та­те вы­пол­не­ния сле­ду­ю­ще­го ал­го­рит­ма:

Бей­сикПас­каль

DIM A, B, T, M, R AS INTEGER

A = -11: B = 11

M = A: R = F(А)

t = a

WHILE T < B

    IF F(T) >= R THEN

        M = T

        R = F(T)

    END IF

    t = t + 2

NEXT T

PRINT M

FUNCTION F(x)

    F = -2*(x+2)*(x-6)

END FUNCTION

var a,b,t,M,R: integer;

    Function F(x:integer): integer;

        begin

            F := -2*(x+2)*(x-6)

        end;

begin

    a := -11; b := 11;

    M := a; R := F(a); t:=a;

     while t < b do begin

        if (F(t) >= R) then begin

            M := t;

            R := F(t);

        end;

        t:=t+2;

    end;

    write(M)

end.

Си++Ал­го­рит­ми­че­ский

#include <iostream>

using namespace std;

int F(int x)

{

return -2*(x+2)*(x-6);

}

int main()

{

    int a, b, t, M, R;

    a = -11; b = 11;

    M = a; R = F(a); t=a;

    while (t < b) {

        if (F(t) >= R) {

            M = t; R = F(t);

        }

        t=t+2;

    }

    cout « M « endl;

}

алг

нач

цел a, b, t, M, R

a := -11; b := 11

M := a; R := F(a)

t:=a

нц пока t < b

если F(t) >= R

то

M := t; R := F(t)

все

t:=t+2

кц

вывод M

кон

алг цел F(цел x)

нач

знач := -2*(x+2)*(x-6)

кон

Python

def f(x):

    return -2*(x+2)*(x-6)

a = -11

b = 11

M = a

R = F(a)

t = a

while t < b:

    if (f(t) >= R):

        M = t

        R = f(t);

    t += 2

print(M)

Спрятать решение

Ре­ше­ние.

1.  Ал­го­ритм ищет такое не­чет­ное t, при ко­то­ром F(t) при­ни­ма­ет наи­боль­шее зна­че­ние на от­рез­ке от a до b.

2.  F левая круг­лая скоб­ка x пра­вая круг­лая скоб­ка = минус 2 левая круг­лая скоб­ка x плюс 2 пра­вая круг­лая скоб­ка левая круг­лая скоб­ка x минус 6 пра­вая круг­лая скоб­ка = минус 2x в квад­ра­те плюс 8x плюс 24, гра­фик функ­ции – па­ра­бо­ла, ветви ко­то­рой на­прав­ле­ны вниз, она при­ни­ма­ет наи­боль­шее зна­че­ние в вер­ши­не или на одном из кон­цов от­рез­ка.

 

3.  Най­дем абс­цис­су вер­ши­ны: x_\min = дробь: чис­ли­тель: минус b, зна­ме­на­тель: 2a конец дроби = дробь: чис­ли­тель: 8, зна­ме­на­тель: 2 умно­жить на 2 конец дроби =2.

 

4.  Так как t все­гда уве­ли­чи­ва­ет­ся на 2 (t:=t+2), оно все­гда остаётся нечётным. Най­ден­ная вер­ши­на — чётное число. Сле­до­ва­тель­но, надо смот­реть бли­жай­шие нечётные зна­че­ния t: 1 и 3. F(1) = F(3).

 

Т. к. имеем усло­вие F(t) >= R, за­по­ми­на­ет­ся номер по­след­не­го эле­мен­та, рав­но­го мак­си­му­му. Ответ: 3.