Задания
Версия для печати и копирования в MS Word
Тип Д21 № 17339
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−10)*(x−10)+10

    ELSE

        F = (x+9)*(x+9)+11

    END IF

END FUNCTION

def F(x):

    if x > 0:

        return (x−10)*(x−10)+10

    else:

        return (x+9)*(x+9)+11

 

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−10)*(x−10)+10

        else F := (x+9)*(x+9)+11;

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−10)*(x−10)+10

        иначе знач := (x+9)*(x+9)+11

    все

кон

 

С++

#include <iostream>

using namespace std;

long f(int x) {

    if (x > 0) return (x−10)*(x−10)+10;

    else return (x+9)*(x+9)+11;

}

 

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 пра­вая круг­лая скоб­ка умно­жить на левая круг­лая скоб­ка x минус 10 пра­вая круг­лая скоб­ка плюс 10, если x > 0, и F левая круг­лая скоб­ка x пра­вая круг­лая скоб­ка = левая круг­лая скоб­ка x плюс 9 пра­вая круг­лая скоб­ка умно­жить на левая круг­лая скоб­ка x плюс 9 пра­вая круг­лая скоб­ка плюс 11, если x ≤ 0. За­ме­тим, что наи­мень­шее зна­че­ние функ­ции, рав­ное 11, до­сти­га­ет­ся в точ­ках −9 и 9. По­сколь­ку в усло­вии при­сво­е­ния зна­че­ния функ­ции стоит знак «<» (if F(t) < R), про­грам­ма вы­ве­дет ре­зуль­тат для точки −9. Те­перь скла­ды­ва­ем −9 и 11 и по­лу­ча­ем 2.

 

Ответ: 2.