СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Задание 19 (презентация по типам задач к ЕГЭ)

Категория: Информатика

Нажмите, чтобы узнать подробности

В данной презентации рассматриваются основные типы задач на работу с массивами (заполнение, считывание, поиск, сортировка, массовые операции и др.) В презентации использованы типовые задачи с решениями из материалов К.Ю.Полякова с сайта http://kpolyakov.spb.ru ...

Просмотр содержимого документа
«Задание 19 (презентация по типам задач к ЕГЭ)»

Ege 19 ( повышенный уровень, время – 5 мин ) Работа с массивами (заполнение, считывание, поиск, сортировка,  массовые  операции и др.) Что нужно знать : работу цикла for (цикла с переменной) массив – это набор однотипных элементов, имеющих общее имя и расположенных в памяти рядом для обращения к элементу массива используют квадратные скобки, запись A[i]  обозначает элемент массива A с номером (индексом)  i матрица (двухмерный массив) – это прямоугольная таблица однотипных элементов если матрица имеет имя A, то обращение A[i,k] обозначает элемент, расположенный на пересечении строки i и столбца k элементы, у которых номера строки и столбца совпадают, расположены на главной диагонали A[1 , 1]         A[ 2,2 ]           A[ 3,3 ]       A[ 4,4 ]

Ege 19 ( повышенный уровень, время – 5 мин )

Работа с массивами (заполнение, считывание, поиск, сортировка, массовые операции и др.)

Что нужно знать :

  • работу цикла for (цикла с переменной)
  • массив – это набор однотипных элементов, имеющих общее имя и расположенных в памяти рядом
  • для обращения к элементу массива используют квадратные скобки, запись A[i] обозначает элемент массива A с номером (индексом) i
  • матрица (двухмерный массив) – это прямоугольная таблица однотипных элементов
  • если матрица имеет имя A, то обращение A[i,k] обозначает элемент, расположенный на пересечении строки i и столбца k
  • элементы, у которых номера строки и столбца совпадают, расположены на главной диагонали

A[1 , 1]

 

 

 

 

A[ 2,2 ]

 

 

 

 

 

A[ 3,3 ]

 

 

 

A[ 4,4 ]

выше главной диагонали расположены элементы, у которых номер строки меньше номера столбца:   A[1 ,2 ]   A[1 , 3]       A[1 , 4] A[2 ,3 ]     A[2 , 4]   A[ 3, 4]     ниже главной диагонали расположены элементы, у которых номер строки больше номера столбца:     A[2,1]   A[3 , 1]     A[4 , 1]   A[3 , 2]     A[4 , 2]   A[4 ,3 ]  
  • выше главной диагонали расположены элементы, у которых номер строки меньше номера столбца:

 

A[1 ,2 ]

 

A[1 , 3]

 

 

 

A[1 , 4]

A[2 ,3 ]

 

 

A[2 , 4]

 

A[ 3, 4]

 

 

  • ниже главной диагонали расположены элементы, у которых номер строки больше номера столбца:

 

 

A[2,1]

 

A[3 , 1]

 

 

A[4 , 1]

 

A[3 , 2]

 

 

A[4 , 2]

 

A[4 ,3 ]

 

Пример I : В программе описан одномерный целочисленный массив с индексами от 0 до 10. Ниже представлен фрагмент программы, обрабатывающей данный массив: s:=0; n:=10; for i:=0 to n-2 do begin  s:=s+A[i]-A[i+2] end; В начале выполнения этого фрагмента в массиве находились трёхзначные натуральные числа. Какое наибольшее значение может иметь переменная s после выполнения данной программы? Решение : 1. чтобы понять, что же делает эта программа; возьмем массив из пяти элементов ( n = 4 ): 0 A[0] 1 2 A[1] 3 A[2] 4 A[3] A[4]

Пример I :

В программе описан одномерный целочисленный массив с индексами от 0 до 10. Ниже представлен фрагмент программы, обрабатывающей данный массив:

s:=0;

n:=10;

for i:=0 to n-2 do begin

s:=s+A[i]-A[i+2]

end;

В начале выполнения этого фрагмента в массиве находились трёхзначные натуральные числа. Какое наибольшее значение может иметь переменная s после выполнения данной программы?

Решение :

1. чтобы понять, что же делает эта программа; возьмем массив из пяти элементов ( n = 4 ):

0

A[0]

1

2

A[1]

3

A[2]

4

A[3]

A[4]

2. переменная s будет изменяться следующим образом: s:=0; n:=10; for i:=0 to n-2 do begin  s:=s+A[i]-A[i+2] end; s := 0 s := s + A[0] – A[2] s := s + A[1] – A[3] s := s + A[2] – A[4] 3. в итоге после всех действий = A[0] + A[1] – A[3] – A[4] 4. это значит, что значение s  всегда будет равно сумме двух первых элементов массива минус  сумма двух последних элементов 5. все числа – трёхзначные , то есть принадлежат отрезку [ 100;999 ] 6. максимальное значение s равно 999 + 999 – 100 – 100 = 1798 7. обратите внимание, что это число не зависит от размера массива Ответ: 1798

2. переменная s будет изменяться следующим образом:

s:=0;

n:=10;

for i:=0 to n-2 do

begin

s:=s+A[i]-A[i+2]

end;

s := 0

s := s + A[0] – A[2]

s := s + A[1] – A[3]

s := s + A[2] – A[4]

3. в итоге после всех действий

= A[0] + A[1] – A[3] – A[4]

4. это значит, что значение s всегда будет равно сумме двух первых элементов массива минус сумма двух последних элементов

5. все числа – трёхзначные , то есть принадлежат отрезку [ 100;999 ]

6. максимальное значение s равно 999 + 999 – 100 – 100 = 1798

7. обратите внимание, что это число не зависит от размера массива

Ответ: 1798

Пример II : В программе используется одномерный целочисленный массив A с индексами от 0 до 9 . Значения элементов равны 6; 9; 7; 2; 1; 5; 0; 3; 4; 8 соответственно, т.е. A[0] = 6; A[1] = 9 и т.д.  Определите значение переменной c после выполнения следующего фрагмента программы : c := 0; for i := 1 to 9 do  if A[i-1]  begin  c := c + 1;  t := A[i];  A[i] := A[i-1];  A[i-1] := t  end; Решение : 1. что же делает эта программа:  в цикле рассматриваются пары соседних элементов, начиная с пары ( A[0] , A[1] ) и заканчивая парой ( A[8] , A[9] );  если предыдущий элемент A[i-1] ( A[i] ), они меняются местами через вспомогательную переменную t ; таким образом, цикл выполняет один этап (один проход по массиву) метода сортировки массива по убыванию , который называется «методом пузырька»  начальное значение переменной c , которая нас интересует, равно нулю ; при каждой перестановке оно увеличивается на 1 (начиная с нуля), то есть, c – счётчик перестановок

Пример II :

В программе используется одномерный целочисленный массив A с индексами от 0 до 9 . Значения элементов равны 6; 9; 7; 2; 1; 5; 0; 3; 4; 8 соответственно, т.е. A[0] = 6; A[1] = 9 и т.д. Определите значение переменной c после выполнения следующего фрагмента программы :

c := 0;

for i := 1 to 9 do

if A[i-1]

begin

c := c + 1;

t := A[i];

A[i] := A[i-1];

A[i-1] := t

end;

Решение :

1. что же делает эта программа:

  • в цикле рассматриваются пары соседних элементов, начиная с пары ( A[0] , A[1] ) и заканчивая парой ( A[8] , A[9] );
  • если предыдущий элемент A[i-1] ( A[i] ), они меняются местами через вспомогательную переменную t ;

таким образом, цикл выполняет один этап (один проход по массиву) метода сортировки массива по убыванию , который называется «методом пузырька»

  • начальное значение переменной c , которая нас интересует, равно нулю ; при каждой перестановке оно увеличивается на 1 (начиная с нуля), то есть, c – счётчик перестановок
2. для первой пары выполняется условие A[0] , поэтому выполняется перестановка: 6 9 9 7 6 2 7 1 2 1 5 0 5 3 0 4 3 8 4 8 3. следующая перестановка будет для пары ( A[1] , A[2] ): 9  6 9 7 7 2 6 2 1 5 1 5 0 3 0 3 4 8 4 8 4. следующая – для пары ( A[4] , A[5] ): 9  9 7 6 7 2 6 1 2 5 5 0 1 3 0 3 4 4 8 8 5. и далее еще 3 перестановки, в результате которых значение 0 перемещается до конца массива: 9  9 7 9 7 6 7 2 6 6 5 2 2 5 1  5 1 3  3 1 0 4 3 4 4 0 8 8 8 0 6. всего было сделано 6 перестановок, при каждой счётчик увеличивался на 1 , поэтому после выполнения этого фрагмента значение переменной c будет равно 6 Ответ: 6

2. для первой пары выполняется условие A[0] , поэтому выполняется перестановка:

6

9

9

7

6

2

7

1

2

1

5

0

5

3

0

4

3

8

4

8

3. следующая перестановка будет для пары ( A[1] , A[2] ):

9

6

9

7

7

2

6

2

1

5

1

5

0

3

0

3

4

8

4

8

4. следующая – для пары ( A[4] , A[5] ):

9

9

7

6

7

2

6

1

2

5

5

0

1

3

0

3

4

4

8

8

5. и далее еще 3 перестановки, в результате которых значение 0 перемещается до конца массива:

9

9

7

9

7

6

7

2

6

6

5

2

2

5

1

5

1

3

3

1

0

4

3

4

4

0

8

8

8

0

6. всего было сделано 6 перестановок, при каждой счётчик увеличивался на 1 , поэтому после выполнения этого фрагмента значение переменной c будет равно 6

Ответ: 6

Пример III : В программе используется одномерный целочисленный массив A с индексами от 1 до 25 . Ниже представлен фрагмент программы, в котором задаются значения элементов: n := 25; A[1]:= 2 ; for i:= 2 to n do begin  A[i]:= 2*A[i–1] mod 10; end; Чему будет равно значение A[25] после выполнения фрагмента программы? Решение : 1. заметим особенность: внутри цикла берется остаток от деления 2* A [ i –1] на 10 , то есть последняя цифра десятичной записи; поэтому все элементы массива – однозначные числа 2. если бы не было этого взятия остатка, каждое последующее число в 2 раза больше предыдущего, цепочка начинается с 2 , поэтому в массиве были бы записаны степени числа 2 : 2 , 4 , 8 , 16 , 32 , 64 , 128 , 256 , 512 , 1024 и т.д.

Пример III :

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

n := 25;

A[1]:= 2 ;

for i:= 2 to n do begin

A[i]:= 2*A[i–1] mod 10;

end;

Чему будет равно значение A[25] после выполнения фрагмента программы?

Решение :

1. заметим особенность: внутри цикла берется остаток от деления 2* A [ i –1] на 10 , то есть последняя цифра десятичной записи; поэтому все элементы массива – однозначные числа

2. если бы не было этого взятия остатка, каждое последующее число в 2 раза больше предыдущего, цепочка начинается с 2 , поэтому в массиве были бы записаны степени числа 2 : 2 , 4 , 8 , 16 , 32 , 64 , 128 , 256 , 512 , 1024 и т.д.

3. выделим последние цифры в этой цепочке:  2, 4, 8, 6, 2, 4, 8, 6, 2, 4 , …  они повторяются через 4 элемента 4. таких полных групп в массиве с 25 элементами будет    25 div 4 = 6  эти 6 групп займут первые 24 элемента, а 25 -м будет первый элемент в четвёрке, то есть 2 Ответ: 2

3. выделим последние цифры в этой цепочке: 2, 4, 8, 6, 2, 4, 8, 6, 2, 4 , … они повторяются через 4 элемента

4. таких полных групп в массиве с 25 элементами будет

25 div 4 = 6

эти 6 групп займут первые 24 элемента, а 25 -м будет первый элемент в четвёрке, то есть 2

Ответ: 2

Пример IV : В программе описан одномерный целочисленный массив. Ниже представлен фрагмент программы, обрабатывающей этот массив: s:=0; n:=8; for i:=0 to n-4 do begin  s:=s+A[i]-A[i+3] end; До выполнения этого фрагмента в массиве находились четырехзначные нечетные натуральные числа. Какое наименьшее значение может иметь переменная s после выполнения данной программы? Решение : 1) Расписываем вычисление суммы в виде одной строки, помня, что значение  i меняется в цикле от 0 до 6 (т.е. до 10 – 4 ): s = 0 + A [0] – A [3] + A [1] – A [4] + A [2] – A [5] + A [3] – A [6] +   + A [4] – A [7] + A [5] – A [8] + A [6] – A [9]

Пример IV :

В программе описан одномерный целочисленный массив. Ниже представлен фрагмент программы, обрабатывающей этот массив:

s:=0;

n:=8;

for i:=0 to n-4 do

begin

s:=s+A[i]-A[i+3]

end;

До выполнения этого фрагмента в массиве находились четырехзначные нечетные натуральные числа.

Какое наименьшее значение может иметь переменная s после выполнения данной программы?

Решение :

1) Расписываем вычисление суммы в виде одной строки, помня, что значение i меняется в цикле от 0 до 6 (т.е. до 10 – 4 ):

s = 0 + A [0] – A [3] + A [1] – A [4] + A [2] – A [5] + A [3] – A [6] + + A [4] – A [7] + A [5] – A [8] + A [6] – A [9]

2) Сокращаем одинаковые переменные (элементы массива), записанные со знаками «плюс» и «минус»: s = 0 + A [0] – A [3] + A [1] – A [4] + A [2] – A [5] + A [3] – A [6] +   + A [4] – A [7] + A [5] – A [8] + A [6] – A [9] Получаем: s = A[0] + A[1] + A[2] – A[7] – A[8] – A[9] 3) Получаемая сумма (разность) должна, по условию, иметь наименьшее значение. А элементы массива – это четырехзначные нечетные натуральные числа, т.е. числа в диапазоне от 1001 до 9999 . Следовательно, элементы массива, которые записаны в выражении со знаком «плюс» , должны быть наименьшими из возможных, а элементы массива со знаком «минус» должны быть наибольшими из возможных.  Значит, нужно выбрать их следующими: A [0] = A [1] = A [2] = 1001 , A [7] = A [8] = A [9] = 9999 4) Вычисляем значение s при этих значениях элементов массива: s  = 1001 + 1001 + 1001 – 9999 – 9999 – 9999 = 3  (1001 – 9999) = = –26994 Ответ: -26994

2) Сокращаем одинаковые переменные (элементы массива), записанные со знаками «плюс» и «минус»:

s = 0 + A [0] – A [3] + A [1] – A [4] + A [2] – A [5] + A [3] – A [6] + + A [4] – A [7] + A [5] – A [8] + A [6] – A [9]

Получаем:

s = A[0] + A[1] + A[2] – A[7] – A[8] – A[9]

3) Получаемая сумма (разность) должна, по условию, иметь наименьшее значение. А элементы массива – это четырехзначные нечетные натуральные числа, т.е. числа в диапазоне от 1001 до 9999 .

Следовательно, элементы массива, которые записаны в выражении со знаком «плюс» , должны быть наименьшими из возможных, а элементы массива со знаком «минус» должны быть наибольшими из возможных.

Значит, нужно выбрать их следующими:

A [0] = A [1] = A [2] = 1001 , A [7] = A [8] = A [9] = 9999

4) Вычисляем значение s при этих значениях элементов массива:

s = 1001 + 1001 + 1001 – 9999 – 9999 – 9999 = 3  (1001 – 9999) =

= –26994

Ответ: -26994

Пример V : В программе описан одномерный целочисленный массив A  с индексами от 0 до 9 . Ниже представлен фрагмент программы, в котором значения элементов сначала задаются, а затем меняются: Чему будут равны элементы этого массива после выполнения фрагмента программы? for i:=0 to 9 do  A[i]:=9-i; for i:=0 to 4 do begin  k:=A[i];  A[i]:=A[9-i];  A[9-i]:=k; end; 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 Решение : for i:=0 to 9 do A[i]:=9-i; 1) как заполняется массив в первом цикле? здесь элемент A [0] равен 9, элемент A [1]=8 и т.д. до A [9]=0 2) во втором цикле операторы k:=A[i];  A[i]:=A[9-i];  A[9-i]:=k; меняют местами элементы A [ i ] и A [9- i ]

Пример V :

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

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

for i:=0 to 9 do

A[i]:=9-i;

for i:=0 to 4 do begin

k:=A[i];

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

A[9-i]:=k;

end;

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

Решение :

for i:=0 to 9 do

A[i]:=9-i;

1) как заполняется массив в первом цикле?

  • здесь элемент A [0] равен 9, элемент A [1]=8 и т.д. до A [9]=0

2) во втором цикле операторы

k:=A[i];

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

A[9-i]:=k;

  • меняют местами элементы A [ i ] и A [9- i ]
3) второй цикл выполняется всего 5 раз, то есть останавливается ровно на половине массива for i:=0 to 4 do begin  ... end ; Т.е. в нем меняются элементы A [0]  A[ 9], A [1]  A[ 8], A [2]  A[ 7], A [3]  A[ 6] и A [4]  A[ 5] 4) в результате массив оказывается «развернут» наоборот, элемент A [0] (он был равен 9 ) стал последним, следующий ( A [1]=8 – предпоследним и т.д. то есть получили 0 1 2 3 4 5 6 7 8 9 Ответ: 2

3) второй цикл выполняется всего 5 раз, то есть останавливается ровно на половине массива

for i:=0 to 4 do begin

...

end ;

Т.е. в нем меняются элементы A [0] A[ 9], A [1] A[ 8], A [2] A[ 7], A [3] A[ 6] и A [4] A[ 5]

4) в результате массив оказывается «развернут» наоборот, элемент A [0] (он был равен 9 ) стал последним, следующий ( A [1]=8 – предпоследним и т.д.

то есть получили

0 1 2 3 4 5 6 7 8 9

Ответ: 2

Пример VI : Дан фрагмент программы, обрабатывающей двухмерный массив A размера n × n . k := 1; for i:=1 to n do begin  c := A[i,i];  A[i,i] := A[k,i];  A[k,i] := c; end Представим массив в виде квадратной таблицы, в которой для элемента массива A[i,j] величина i является номером строки, а величина j – номером столбца, в котором расположен элемент. Тогда данный алгоритм меняет местами 1) два столбца в таблице 2) две строки в таблице 3) элементы диагонали и k -ой строки таблицы 4) элементы диагонали и k -го столбца таблицы Решение : 1) операторы c := A[i,i]; A[i,i] := A[k,i]; A[k,i] := c; меняют местами значения A [ i , i ] и A [ k , i ] , используя переменную c в качестве вспомогательной ячейки; элемент матрицы A [ i , i ] , у которого номера строки и столбца одинаковые, стоит на главной диагонали элемент  A [ k , i ] стоит в том же столбце i , но в строке с номером k

Пример VI :

Дан фрагмент программы, обрабатывающей двухмерный массив A размера n × n .

k := 1;

for i:=1 to n do begin

c := A[i,i];

A[i,i] := A[k,i];

A[k,i] := c;

end

Представим массив в виде квадратной таблицы, в которой для элемента массива A[i,j] величина i является номером строки, а величина j – номером столбца, в котором расположен элемент. Тогда данный алгоритм меняет местами

1) два столбца в таблице

2) две строки в таблице

3) элементы диагонали и k -ой строки таблицы

4) элементы диагонали и k -го столбца таблицы

Решение :

1) операторы

c := A[i,i];

A[i,i] := A[k,i];

A[k,i] := c;

меняют местами значения A [ i , i ] и A [ k , i ] , используя переменную c в качестве вспомогательной ячейки;

  • элемент матрицы A [ i , i ] , у которого номера строки и столбца одинаковые, стоит на главной диагонали
  • элемент A [ k , i ] стоит в том же столбце i , но в строке с номером k
это значит, что в столбце  i  меняются местами элемент на главной диагонали и элемент в строке   k     k       i i             A[k,i]             A[ i,i ]       так как эти операторы находятся в цикле, где переменная i принимает последовательно все значения от 1 до n , обмен выполняется для всех столбцов матрицы; то есть, все элементы главной диагонали меняются с соответствующими элементами строки k перед циклом стоит оператор присваивания k := 1 , а после него переменная k не меняется; поэтому в программе элементы главной диагонали обмениваются с первой строкой Ответ: 3
  • это значит, что в столбце i меняются местами элемент на главной диагонали и элемент в строке   k

 

 

k

 

 

 

i

i

 

 

 

 

 

 

A[k,i]

 

 

 

 

 

 

A[ i,i ]

 

 

 

  • так как эти операторы находятся в цикле, где переменная i принимает последовательно все значения от 1 до n , обмен выполняется для всех столбцов матрицы;
  • то есть, все элементы главной диагонали меняются с соответствующими элементами строки k
  • перед циклом стоит оператор присваивания k := 1 , а после него переменная k не меняется;
  • поэтому в программе элементы главной диагонали обмениваются с первой строкой

Ответ: 3

Пример VII : Значения двух массивов A [1..100] и B [1..100] задаются с помощью следующего фрагмента программы: for n :=1 to 100 do  A [ n ] := (n-80)*(n-80); for n:=1 to 100 do  B[101-n] := A[n]; B[1]  B [21]  B [80]  B [100] Какой элемент массива B будет наибольшим ? Решение : 1) в элемент массива A [ n ] записывается квадрат числа n -80 некоторые элементы массива А : т.е. максимальное значение в массиве A – это A[1] = 79 2 A[1] = (1–80) 2 = (–79) 2 = 79 2  A[2] = ( 2 –80) 2 = (–78) 2 = 78 2 ... 2) во втором цикле для всех n от 1 до 100 выполняется оператор A[ 80 ] = ( 80 –80) 2 = ( 0 ) 2 = 0  A[ 81 ] = ( 81 –80) 2 = ( 1 ) 2 = 1 ... B [101- n ] := A [ n ]; элемент A [1] будет записан в B [100], а A [ 100 ] – в B [1] A[ 99 ] = ( 99 –80) 2 = 19 2  A[ 100 ] = ( 100 –80) 2 = 20 2 поэтому B[100] – наибольший элемент в массиве В Ответ: 4

Пример VII :

Значения двух массивов A [1..100] и B [1..100] задаются с помощью следующего фрагмента программы:

for n :=1 to 100 do

A [ n ] := (n-80)*(n-80);

for n:=1 to 100 do

B[101-n] := A[n];

  • B[1]
  • B [21]
  • B [80]
  • B [100]

Какой элемент массива B будет наибольшим ?

Решение :

1) в элемент массива A [ n ] записывается квадрат числа n -80

  • некоторые элементы массива А :
  • т.е. максимальное значение в массиве A – это A[1] = 79 2

A[1] = (1–80) 2 = (–79) 2 = 79 2

A[2] = ( 2 –80) 2 = (–78) 2 = 78 2

...

2) во втором цикле для всех n от 1 до 100 выполняется оператор

A[ 80 ] = ( 80 –80) 2 = ( 0 ) 2 = 0

A[ 81 ] = ( 81 –80) 2 = ( 1 ) 2 = 1

...

B [101- n ] := A [ n ];

  • элемент A [1] будет записан в B [100], а A [ 100 ] – в B [1]

A[ 99 ] = ( 99 –80) 2 = 19 2

A[ 100 ] = ( 100 –80) 2 = 20 2

  • поэтому B[100] – наибольший элемент в массиве В

Ответ: 4

k then A [ i , k ] := 1 else A [ i , k ] := 0; Чему равна сумма элементов массива после выполнения этого фрагмента программы? Решение : 1) в программе есть вложенный цикл, в котором переменная i обозначает строку, а k – столбец матрицы элементы, для которых i=k – это главная диагональ матрицы элементы, для которых i k (только они будут равны 1 ), находятся под главной диагональю в первой строке единичных элементов нет, во 2- й есть один такой элемент, в 3-ей – 2 , в последней (10-ой) их 9 поэтому сумма элементов массива равна 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 45 Ответ: 45 " width="640"

Пример VIII :

Значения элементов двухмерного массива A[1..10,1..10] задаются с помощью следующего фрагмента программы:

for i :=1 to 10 do

for k :=1 to 10 do

if i k then

A [ i , k ] := 1

else

A [ i , k ] := 0;

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

Решение :

1) в программе есть вложенный цикл, в котором переменная i обозначает строку, а k – столбец матрицы

  • элементы, для которых i=k – это главная диагональ матрицы
  • элементы, для которых i k (только они будут равны 1 ), находятся под главной диагональю
  • в первой строке единичных элементов нет, во 2- й есть один такой элемент, в 3-ей – 2 , в последней (10-ой) их 9
  • поэтому сумма элементов массива равна

1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 45

Ответ: 45

Пример IX : Значения элементов двухмерного массива A[1..10,1..10] сначала равны 5 . Затем выполняется следующий фрагмент программы: Сколько элементов массива будут равны 10 ? for i :=1 to  5  do  for j :=1 to 4 do begin  A[i,j]:=A[i,j]+5; A[j,i]:=A[j,i]+5; e nd; {1} Решение : 1) обратим внимание, что в двойном цикле переменная i изменяется от 1 до 5 , а j – от 1 до 4 (на 1 шаг меньше) {2}   1 1 2 2 3 3     4 4           5     5   6     6     7     7                                                           2) внутри цикла { 1 } , в записи A[i,j] переменная i   – это строка, а j – столбец, поэтому по одному разу обрабатываются все элементы массива, выделенные зеленым цветом: 3)  это значит, что если оставить только один первый оператор внутри цикла, все выделенные элементы увеличиваются на 5 и станут равны 10

Пример IX :

Значения элементов двухмерного массива A[1..10,1..10] сначала равны 5 . Затем выполняется следующий фрагмент программы:

Сколько элементов массива будут равны 10 ?

for i :=1 to 5 do

for j :=1 to 4 do begin

A[i,j]:=A[i,j]+5; A[j,i]:=A[j,i]+5;

e nd;

{1}

Решение :

1) обратим внимание, что в двойном цикле переменная i изменяется от 1 до 5 , а j – от 1 до 4 (на 1 шаг меньше)

{2}

 

1

1

2

2

3

3

 

 

4

4

 

 

 

 

 

5

 

 

5

 

6

 

 

6

 

 

7

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2) внутри цикла { 1 } , в записи A[i,j] переменная i   – это строка, а j – столбец, поэтому по одному разу обрабатываются все элементы массива, выделенные зеленым цветом:

3) это значит, что если оставить только один первый оператор внутри цикла, все выделенные элементы увеличиваются на 5 и станут равны 10

  1 1 2 2 3   3       4   4       5   5   6         6       7       7                                                   4) теперь рассмотрим второй оператор внутри цикла: в записи A[ j , i ] переменная i   – это столбец, а j – строка, поэтому по одному разу обрабатываются (увеличиваются на 5 ) все элементы массива, выделенные рамкой красного цвета на рисунке :   1 1 2 2 3 3         4 4           5 5       6     6         7     7                                                   5) хорошо видно, что левый верхний угол массива (квадрат 4 на 4 , синяя область ) попадает в обе области, то есть, эти 16 элементов будут дважды увеличены на 5 : они станут равны 15 после выполнения программы 6) элементы, попавшие в зеленый и красный « хвостики » обрабатываются (увеличиваются на 5 ) по одному разу, поэтому они-то и будут равны 10 всего таких элементов – 8 штук Ответ: 8

 

1

1

2

2

3

 

3

 

 

 

4

 

4

 

 

 

5

 

5

 

6

 

 

 

 

6

 

 

 

7

 

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4) теперь рассмотрим второй оператор внутри цикла: в записи A[ j , i ] переменная i   – это столбец, а j – строка, поэтому по одному разу обрабатываются (увеличиваются на 5 ) все элементы массива, выделенные рамкой красного цвета на рисунке :

 

1

1

2

2

3

3

 

 

 

 

4

4

 

 

 

 

 

5

5

 

 

 

6

 

 

6

 

 

 

 

7

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5) хорошо видно, что левый верхний угол массива (квадрат 4 на 4 , синяя область ) попадает в обе области, то есть, эти 16 элементов будут дважды увеличены на 5 : они станут равны 15 после выполнения программы

6) элементы, попавшие в зеленый и красный « хвостики » обрабатываются (увеличиваются на 5 ) по одному разу, поэтому они-то и будут равны 10

всего таких элементов – 8 штук

Ответ: 8

ДЕМО - 2017 В программе используется одномерный целочисленный массив A с индексами от 0 до 9 . Значения элементов равны 1, 2, 5, 8, 9, 3, 4, 0, 7, 6 соответственно, т.е. A[0] = 1, A[1] = 2 и т.д. Определите значение переменной j  после выполнения следующего фрагмента программы j := 5; while A[ j ]  j -1] do begin t := A[ j ]; A[ j ] := A[ j -1]; A[ j -1] := t; j := j - 1; end; В данном фрагменте программы сравнивается очередной элемент (начиная с 5-го) с предыдущим. Если очередной элемент меньше предыдущего, то они меняются местами. При j=2 программа завершится. Ответ: 2

ДЕМО - 2017

В программе используется одномерный целочисленный массив A с индексами от 0 до 9 . Значения элементов равны 1, 2, 5, 8, 9, 3, 4, 0, 7, 6 соответственно, т.е. A[0] = 1, A[1] = 2 и т.д.

Определите значение переменной j после выполнения следующего фрагмента программы

j := 5;

while A[ j ] j -1] do

begin

t := A[ j ];

A[ j ] := A[ j -1];

A[ j -1] := t;

j := j - 1;

end;

В данном фрагменте программы сравнивается очередной элемент (начиная с 5-го) с предыдущим. Если очередной элемент меньше предыдущего, то они меняются местами. При j=2 программа завершится.

Ответ: 2


Скачать

Рекомендуем курсы ПК и ППК для учителей

Вебинар для учителей

Свидетельство об участии БЕСПЛАТНО!