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

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

 

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

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

A = -20: B = 20

M = A: R = F(A)

FOR T = A TO B

    IF F(T) < R THEN

        M = T

        R = F(T)

    ENDIF

NEXT T

PRINT R

FUNCTION F(x)

    F = 16 * (9 - x)* (9 - x) + 127;

END FUNCTION

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

    Function F(x:integer):integer;

        begin

            F : = 16 * (9 - x)* (9 - x) + 127;

        end;

begin

    a : = -20; b : = 20;

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

    for t : = a to b do begin

        if (F(t) < R ) then begin

            M : = t;

            R : = F(t)

        end

    end;

    write(R);

end.

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

#include <iostream>

using namespace std;

int F(int x)

{

    return 16 * (9 - x)* (9 - x) + 127;

}

int main()

{

    int a, b, t, M, R;

    a = -20; b = 20;

    M = a; R = F(a);

    for (t = a; t <= b; t++){

        if (F(t) < R) {

            M = t; R = F(t);

        }

        }

    cout « R « endl;

}

алг

нач

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

a : = -20; b : = 20

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

нц для t от a до b

если F(t) < R

то

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

все

кц

вывод R

кон

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

нач

знач : = 16 * (9 - x)* (9 - x) + 127

кон

Python

def f(x):

    return 16 * (9 - x)* (9 - x) + 127

a = -20

b = 20

M = a

R = f(a)

for t in range(a, b+1):

    if (f(t) < R):

        M = t

        R = f(t);

print(R)

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

Ре­ше­ние.

1.  Ал­го­ритм ищет наи­мень­шее зна­че­ние функ­ции F(t) на ин­тер­ва­ле от a до b.

2.  Имеем: F левая круг­лая скоб­ка x пра­вая круг­лая скоб­ка = 16 левая круг­лая скоб­ка 9 минус x пра­вая круг­лая скоб­ка левая круг­лая скоб­ка 9 минус x пра­вая круг­лая скоб­ка плюс 127 =16x в квад­ра­те минус 288x плюс 1423, гра­фик этой функ­ции – па­ра­бо­ла, ветви ко­то­рой на­прав­ле­ны вверх, по­это­му функ­ция при­ни­ма­ет наи­мень­шее зна­че­ние в вер­ши­не.

 

3.  Най­дем абс­цис­су вер­ши­ны:

x_\min = дробь: чис­ли­тель: минус b, зна­ме­на­тель: 2a конец дроби = дробь: чис­ли­тель: минус левая круг­лая скоб­ка минус 288 пра­вая круг­лая скоб­ка , зна­ме­на­тель: 2 умно­жить на 16 конец дроби =9,

как видно, она лежит в нуж­ном ин­тер­ва­ле.

 

4.  Под­ста­вим F левая круг­лая скоб­ка x пра­вая круг­лая скоб­ка = 16 умно­жить на 9 в квад­ра­те минус 288 умно­жить на 9 плюс 1423=1296 минус 2592 плюс 1423 = 127.