СДАМ ГИА: РЕШУ ЕГЭ
Образовательный портал для подготовки к экзаменам
Информатика
Информатика
Cайты, меню, вход, новости


Задания
Версия для печати и копирования в MS Word
Задания Д17 № 3535

Ниже приведены тексты одной и той же программы, записанные на четырех языках программирования. Что будет напечатано в результате выполнения этой программы?

 

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

Module Task

 

Sub Main()

    Dim L As Integer = 4

    Dim R(4) As Integer

    Dim N As Integer

    R.SetValue(6, 1)

    R.SetValue(10, 2)

    R.SetValue(7, 3)

    R.SetValue(3, 4)

    Pr1(L, R)

    N = F1(L, R)

    Console.Write(N)

    Console.WriteLine()

End Sub

 

Sub Pr1(ByVal L As Integer, ByRef R As Array)

    Dim i, n, t As Integer

    For i = 1 To L

        t = (R.GetValue(i) \ 2) * 4

        R.SetValue(t Mod 5, i)

    Next

End Sub

 

Function F1(ByVal L As Integer, ByRef R As Array) As Integer

    Dim N, i, T

    N = 1

    T = 1

    For i = 1 To L

        N = N * R.GetValue(i) + T

        T = T + 2

    Next

    Return N

End Function

 

End Module

Program Task;

Uses crt;

const L = 4;

type atype = array [1..L] of integer;

var R : atype;

N, p : integer;

Procedure Pr1(L : integer; var R : atype );

    var i,n,t : integer;

    begin

        for i:=1 to L do

            begin

                t:=(R[i] div 2)*4;

                R[i]:=t mod 5;

            end;

    end;

 

Function F1 (L : integer; R: atype) : integer;

    Var N, i, T : integer;

    begin

        N:=1;

        T:=1;

        for i:=1 to L do

        begin

            N:=N*R[i]+T;

            T:=T+2;

        end;

    F1:=N;

end;

 

BEGIN

    R[1]:=6; R[2]:=10; R[3]:=7; R[4]:=3;

    Pr1(L, R);

    N:=F1(L,R);

    write(N);

    writeln;

END.

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

#include <iostream>

using namespace std;

#include <stdlib.h>

 

void Pr1(int L, int* R)

{

    int i, n, t;

    for ( i=0; i < L; i++ ) {

        t = (R[i] / 2) * 4;

        R[i] = t % 5;

    }

}

 

 

int F1(int L, int* R)

{

    int N, i, T;

    N = 1;

    T = 1;

    for (i = 0; i < L; i++ ) {

        N = N * R[i]+T;

        T = T+2;

    }

    return N;

}

 

void main()

{

    int L = 4;

    int* R = (int*)calloc(L, sizeof(int));

    int N;

    R[0] = 6; R[1] = 10; R[2] = 7; R[3] = 3;

    Pr1(L, R);

    N = F1(L, R);

    cout << N;

    free(R);

}

алг Задача

нач

цел L=4; целтаб R[1:L]; цел N

R[1]:=6; R[2]:=10; R[3]:=7; R[4]:=3;

Pr1(L, R)

N:=F1(L, R)

вывод N, нс

кон

алг Pr1(цел L, аргрез целтаб R[1:L])

нач

цел i, n, t

нц для i от 1 до L

t:=div(R[i],2)*4

R[i]:=mod(t, 5)

кц

кон

алг цел F1(цел L, аргрез целтаб R[1:L])

нач

цел N, i, T

N:=1

T:=1

нц для i от 1 до L

N:=N*R[i]+T

T:=T+2

кц

знач:= N

кон

 

 

----------

Задание повышенной сложности.

Решение.

В конце программы на экран выводится значение переменной N, рассмотрим как оно получается на примере программы на Паскале.

 

Поскольку L = 4, то изначально мы имеем одномерный массив из четырёх целочисленных элемнтов R[i]:

R[1]:=6; R[2]:=10; R[3]:=7; R[4]:=3;. В ходе процедуры Pr1 эти значения изменяются, причём независимо друг от друга:

 

for i:=1 to L do

begin

t:=(R[i] div 2)*4;

R[i]:=t mod 5;

Оператор div оставляет целую часть от деления, а оператор mod оставляет остаток от деления (при делении на 5 он не превышает 4).

 

R[i]61073
t = (R[i] div 2) * 43 * 45 * 43 * 41 * 4
R[i] = t mod 52024

Функции F1 присваивается значени переменой N, которое внутри тела функции получается следующим образом:

 

for i:=1 to L do

begin

N:=N*R[i]+T;

T:=T+2;

end;

 

Подставим полученные ранее значения R[i]:

 

i=1: T = 1, N = 1 * 2 + 1 = 3,

i=2: T = 3, N = 3 * 0 + 3 = 3,

i=3: T = 5, N = 3 * 2 + 5 = 11,

i=4: T = 7, N = 11 * 4 + 7 = 51.

 

Последнее действие и даст нам искомый результат.

 

Ответ: 51.


Аналоги к заданию № 3535: 3540 Все