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

Какое число будет на­пе­ча­та­но в ре­зуль­та­те ра­бо­ты сле­ду­ю­щей про­грам­мы? Для Ва­ше­го удоб­ства про­грам­ма при­ве­де­на на пяти язы­ках про­грам­ми­ро­ва­ния.

 

Бей­сикPython

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

A = -9: B = 9

M = A: R = F(A)

FOR T = A TO B

    IF F(T) <= R THEN

        M = T

        R = F(T)

    END IF

NEXT T

PRINT M+R

 

FUNCTION F(x)

    IF X>0 THEN

        F = (x*x-10)*(x*x-10) + 9

    ELSE

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

    END IF

END FUNCTION

def F(x):

    if x>0:

        return (x*x-10)*(x*x-10) + 9

    else:

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

a=-9; b=9

M=a; R=F(a)

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

    if F(t) <= R:

        M=t; R=F(t)

print(M+R)

Пас­кальАл­го­рит­ми­че­ский язык

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

function F(x:integer):integer;

    begin

        if x>0

            then F := (x*x-10)*(x*x-10) + 9

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

    end;

begin

    a := -9; b := 9;

    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(M+R)

end.

 

алг

нач

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

    a := -9; b := 9

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

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

        если F(t) <= R

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

        все

    кц

    вывод M+R

кон

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

нач

    если x>0

        то знач := (x*x-10)*(x*x-10) + 9

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

    все

кон

 

С++

#include <iostream>

using namespace std;

int F(int x)

{

    if (x>0)

        return (x*x-10)*(x*x-10) + 9;

    else

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

}

 

int main()

{

    int a, b, t, M, R;

    a = -9; b = 9;

    M = a; R = F(a);

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

        if (F(t) <= R) {

            M = t; R = F(t);

        }

    }

    cout << M+R;

    return 0;

}

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

Ре­ше­ние.

1.  Ал­го­ритм пред­на­зна­чен для по­ис­ка наи­мень­ше­го зна­че­ния функ­ции F(t) на от­рез­ке от a до b, сум­ми­ро­ва­ния наи­мень­ше­го зна­че­ния с t, при ко­то­ром зна­че­ние F(t) будет наи­мень­шим и вы­во­да этой суммы на экран.

2.  F левая круг­лая скоб­ка x пра­вая круг­лая скоб­ка = левая круг­лая скоб­ка x в квад­ра­те минус 10 пра­вая круг­лая скоб­ка в квад­ра­те плюс 9 и F левая круг­лая скоб­ка x пра­вая круг­лая скоб­ка = левая круг­лая скоб­ка x в квад­ра­те минус 6 пра­вая круг­лая скоб­ка в квад­ра­те плюс 6. Пер­вая функ­ция при­ни­ма­ет ми­ни­маль­ное зна­че­ние в точ­ках, где вы­ра­же­ние (x2 − 10)2 об­ра­ща­ет­ся в ноль, сле­до­ва­тель­но, на от­рез­ке [1; 9] наи­мень­шее зна­че­ние до­сти­га­ет­ся в точке 3, и равно F(3) = 10. Вто­рая функ­ция при­ни­ма­ет ми­ни­маль­ное зна­че­ние в точ­ках, где вы­ра­же­ние (x2 − 6)2 об­ра­ща­ет­ся в ноль, сле­до­ва­тель­но, на от­рез­ке [−9; 0] наи­мень­шее зна­че­ние до­сти­га­ет­ся в точке −2, и равно F(−2) = 10. При по­ис­ке ми­ни­маль­но­го зна­че­ния ис­поль­зу­ет­ся не­стро­гая про­вер­ка, по­это­му будет ис­поль­зо­ва­но по­след­нее най­ден­ное зна­че­ние. Зна­чит, на экран будет вы­ве­де­но 3 + 10 = 13.

 

Ответ: 13.