Главная / Задние 19 / Задание 19. Пример задания

Задание 19. Пример задания

1. Пример задания

В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Ниже представлен фрагмент программы, записанный на разных языках программирования, в котором значения элементов сначала задаются, а затем меняются.

Бейсик Паскаль
FOR i=0 TO 9 for i:=0 to 9 do
  A(i)=9-i   A[i]:=9-i;
NEXT i for i:=0 to 4 do
FOR i=0 TO 4 begin
  k = A(i)   k:=A[i];
  A(i) = A(9-i)   A[i]:=A[9-i];
  A(9-i) =k   A[9-i]:=k;
NEXT i end;
Си Алгоритмический язык
for (i=0;i<=9;i++) нц для i от 0 до 9
  A[i]=9-i;   A[i]:=9-i
for (i=0;i<=4;i++) кц
{ нц для i от 0 до 4
  k=A[i];   k:=A[i]
  A[i]=A[9-i];   A[i]:=A[9-i]
  A[9-i]=k;   A[9-i]:=k
} кц

Чему будут равны элементы этого массива после выполнения фрагмента программы?

1)      9 8 7 6 5 4 3 2 1 0
2)      0 1 2 3 4 5 6 7 8 9
3)      9 8 7 6 5 5 6 7 8 9
4)      0 1 2 3 4 4 3 2 1 0

 Решение (приведено для записи программы на Алгоритмическом языке). В цикле

нц для i от 0 до 9

A[i]:=9-i

кц

элементы массива  инициализируются следующим образом:

A[0] = 9, A[1] = 8, ...,   A[i] = 9-i,  ..., A[9] = 0.

Тело второго цикла

k:=A[i]
A[i]:=A[9-i]
A[9-i]:=k
 

реализует обмен значениями элементов A[i] и A[9-i], т.е. элементов расположенных симметрично относительно середины массива. Поскольку этот цикл выполняется для i от 0 до 4, то массив будет изменен следующим образом:

до начала второго цикла:                   9       8       7       6       5       4       3       2       1       0
1-я итерация (для i = 0):                       0       8       7       6       5       4       3       2       1       9
2-я итерация (для i = 1):                       0       1       7       6       5       4       3       2       8       9
...
5-я и последняя итерация (для i = 4)   0       1       2       3       4       5       6       7       8       9

Ответ: 2.

 2. Еще одна задача

В программе описан одномерный целочисленный массив с индексами
от 0 до n  (т.е. первый элемент имеет индекс 0, последний - индекс n). Ниже представлен фрагмент одной и той же программы, записанный на разных языках программирования, обрабатывающей данный массив:

 

Бейсик Паскаль
s = 0: s:=0;
z = A(0) z:=A[0];
FOR i = 1 TO n for i:=1 to n do begin
IF A(i) = z THEN if A[i]=z then
s = s + 1         s:=s+1;
NEXT i end
Си Алгоритмический язык
s = 0; s:=0
z = A[0]; z:=A[0]
for (i = 1; i <= n; i++){ нц для i от 1 до  n
  if (A[i] == z) если A[i]= z то
    s++;       s:=s+1;
все
} кц

1) Количеству элементов массива A, больших первого элемента массива. Чему будет равно значение переменной s после выполнения данной программы, при любых значениях элементов массива?

2) Количеству элементов массива A, не превосходящих первого элемента массива
3) Количеству элементов массива A, не равных первому элементу массива
4) Количеству элементов массива A, равных первому элементу массива

 Решение. Приведенный алгоритм – алгоритм подсчета числа событий. Событие наступает, если очередной элемент массива равен значению переменной z. Это значение в цикле не меняется. До начала выполнения цикла оно было установлено равным первому элементу массива. Таким образом, алгоритм вычисляет количество элементов массива, которые равны его первому элементу.

Правильный ответ: 4

 

 

 

 

 
 

4 комментария

  1. Custo:

    Спасибо за пояснение.

    • editor:

      Не за что:) Пиши еще.
      PS У нас был перерыв в ответах - теперь постараемся работать без сбоев 🙂
      Удачи!

      • Александра:

        Пожалуйста, помогите!)

        Ниже приведён фрагмент программы, записанный на четырёх языках
        программирования.
        Массив A одномерный; в программе рассматривается его фрагмент,
        соответствующий значениям индекса от 1 до n.
        Бейсик
        J = 1
        FOR I = 1 TO n
        IF A(I) < A(J) THEN J = I
        NEXT I
        s = J
        паскаль
        j := 1;
        for i := 1 to n do
        begin
        if A[i] < A[j] then
        j := i
        end;
        s := j;
        Си
        j = 1;
        for (i = 1; i <= n; i++)
        {
        if (A[i] < A[j])
        {
        j = i;
        }
        }
        s = j;
        j := 1
        алгоритмический
        нц для i от 1 до n
        если A[i] < A[j] то
        j := i
        все
        кц
        s := j
        Чему будет равно значение переменной s после выполнения данного
        фрагмента программы?
        1) минимальному элементу в массиве A
        2) индексу минимального элемента в массиве A (наименьшему из таких
        индексов, если минимальных элементов несколько)
        3) индексу минимального элемента в массиве A (наибольшему из таких
        индексов, если минимальных элементов несколько)
        4) количеству элементов, равных минимальному в массиве A

        • editor:

          Правильный вариант ответа - №2. Напиши пож, что именно тебе непонятно. Удачи!

 
 

Ответить Custo

 




 
 

 
 
Яндекс.Метрика