Массивы в языке программирования Паскаль

  • docx
  • 05.05.2020
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала 9. Массивы в языке программирования Паскаль.docx

Контрольно-измерительные материалы
для проведения проверочной работы
по теме «Массивы в языке программирования Паскаль»
по предмету «Информатика»

Цель работы: проверка навыков написания программ для решения задач по программированию учащихся десятых классов общеобразовательных учреждений.

Структура работы: работа рассчитана на четыре варианта. Общее количество заданий в работе – 3.

Время проведения работы: проверочная работа проводится в урочное время согласно рабочей программе. На выполнение работы отводится 45 минут.

Требования к оборудованию – индивидуально распечатанная карточка.

 


 

ВАРИАНТ 1

1)    Дан массив, содержащий 2014 положительных целых чисел. Напишите на одном из языков программирования программу, которая находит в этом массиве количество локальных минимумов. Локальным минимумом называется элемент массива, который меньше всех своих соседей. Например, в массиве из 6 элементов, содержащем числа 4, 6, 12, 7, 3, 8, есть два локальных минимума: это элементы, равные 4 и 3. Программа должна вывести общее количество подходящих элементов, значения элементов выводить не нужно. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных.

Паскаль

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

const

N=2014;

var a: array [1..N] of integer;

    i, j, k: integer;

begin

  for i:=1 to N do

    readln(a[i]);

end.

алг

нач

  цел N=2014

  целтаб a[1:N]

  цел i, j, k

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

    ввод a[i]

  кц

кон

2)    Дан массив, содержащий 70 неотрицательных целых чисел. Опишите на одном из языков программирования алгоритм, позволяющий найти и вывести наименьшую нечётную сумму двух соседних элементов массива. Гарантируется, что в массиве есть соседние элементы с нечётной суммой. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.

Паскаль

Естественный язык

const N=70;

var

  a: array [1..N] of integer;

  i, j, x, y: integer;

begin

for i:=1 to N do

 readln(a[i]);

end.

Объявляем массив A из 70 элементов.

Объявляем целочисленные переменные I, J, X, Y. В цикле от 1 до 70 вводим элементы массива A с 1-го по 70-й.

...

3)    Дан целочисленный массив из 30 элементов. Элементы массива могут принимать любые целые значения. Опишите на русском языке или на одном из языков программирования алгоритм, который находит и выводит номер элемента массива, наименее отличающегося от среднего арифметического всех его элементов. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.

Паскаль

Естественный язык

const N=30;

var a: array [1..N] of integer;

    i, k: integer;

    s, min: real;

begin

  for i:=1 to N do readln(a[i]);

  ...

end.

Объявляем массив A из 30 элементов. Объявляем целочисленные переменные i, k.

Объявляем действительные переменные s, min.

В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й.

...

 

 

 

 


 

ВАРИАНТ 2

1)    Дан массив, содержащий 2014 положительных целых чисел. Симметричной парой называются два элемента, которые находятся на равном расстоянии от концов массива. Например, 1-й и 2014-й элементы, 2-й и 2013-й и т. д. Порядок элементов в симметричной паре не учитывается: элементы на 1 и 2014 местах – это та же самая пара, что и элементы на 2014 и 1 местах. Напишите на одном из языков программирования программу, которая подсчитывает в массиве количество симметричных пар, у которых сумма элементов больше 20. Программа должна вывести одно число – количество отобранных симметричных пар. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных переменных.

Паскаль

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

const

N=2014;

var a: array [1..N] of integer;

    i, j, k: integer;

begin

  for i:=1 to N do

    readln(a[i]);

end.

алг

нач

  цел N=2014

  целтаб a[1:N]

  цел i, j, k

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

    ввод a[i]

  кц

  …

кон

2)    Дан массив, содержащий 70 целых чисел. Опишите на одном из языков программирования эффективный алгоритм, позволяющий найти и вывести наибольшую разность двух чисел, содержащихся в массиве. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных переменных.

Паскаль

Естественный язык

const N=70;

var

  a: array [1..N] of integer;

  i, j, x, y: integer;

begin

for i:=1 to N do

 readln(a[i]);

end.

Объявляем массив A из 70 элементов.

Объявляем целочисленные переменные I, J, X, Y. В цикле от 1 до 70 вводим элементы массива A с 1-го по 70-й.

...

3)    Дан целочисленный массив из 30 элементов. Элементы массива могут принимать произвольные целые значения. Опишите на русском языке или на одном из языков программирования алгоритм, который находит и выводит номера двух элементов массива, сумма которых минимальна. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.

Паскаль

Естественный язык

const N=30;

var a: array [1..N] of integer;

    i, j, min, min2, s: integer;

begin

  for i:=1 to N do readln(a[i]);

  ...

end.

Объявляем массив A из 30 элементов. Объявляем целочисленные переменные i, j, min, min2, s. В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й.

...

 

 

 

 

 


 

ВАРИАНТ 3

 

1)    Дан массив, содержащий 2014 положительных целых чисел. Напишите на одном из языков программирования программу, которая находит в этом массиве количество элементов, значение которых более чем в два раза превосходит значение предшествующего элемента. Например, для массива из 6 элементов, содержащего числа 2, 5, 10, 15, 40, 100, программа должна выдать ответ 3 (условию соответствуют элементы со значениями 5, 40 и 100). Программа должна вывести общее количество подходящих элементов, значения элементов выводить не нужно. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных переменных.

Паскаль

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

const N = 2014;

var a: array [1..N] of integer;

i, j, k: integer;

begin

for i:=1 to N do

  readln(a[i]);

end.

алг

нач

цел N=2014

целтаб a[1:N]

цел i, j, k

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

  ввод a[i]

кц

кон

2)    Дан массив, содержащий 70 целых чисел. Опишите на одном из языков программирования алгоритм, позволяющий найти и вывести наименьшее содержащееся в массиве положительное число, десятичная запись которого оканчивается цифрой 7. Гарантируется, что в массиве есть хотя бы один положительный элемент, десятичная запись которого оканчивается цифрой 7. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.

Паскаль

Естественный язык

const N=70;

var

a: array [1..N] of integer;

i, j, m: integer;

begin

  for i:=1 to N do

    readln(a[i]);

end.

Объявляем массив A из 70 элементов.

Объявляем целочисленные переменные I, J, M. В цикле от 1 до 70 вводим элементы массива A с 1-го по 70-й.

...

3)    Дан целочисленный массив из 30 элементов. Элементы массива могут принимать произвольные целые значения. Опишите на русском языке или на одном из языков программирования алгоритм, который находит и выводит номера двух элементов массива, наименее отличающихся друг от друга. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.

Паскаль

Естественный язык

const N=30;

var a: array [1..N] of integer;

    i, j, min, min2, s: integer;

begin

  for i:=1 to N do readln(a[i]);

  ...

end.

Объявляем массив A из 30 элементов. Объявляем целочисленные переменные i, j, min, min2, s. В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й.

...

 

 

 

 


 

ВАРИАНТ 4

1)    Дан массив, содержащий 2014 неотрицательных целых чисел, не превышающих 10 000. Опишите на одном из языков программирования алгоритм, позволяющий найти и вывести сумму всех содержащихся в массиве трёхзначных чисел, десятичная запись которых оканчивается на 9, но не на 99. Если подходящих чисел в массиве нет, программа должна вывести число –1. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных.

Паскаль

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

const N=2014;

var a: array [1..N] of integer;

    i, j, s: integer;

begin

  for i:=1 to N do

   readln(a[i]);

  ...

end.

алг

нач

  цел N=2014

  целтаб a[1:N]

  цел i, j, s

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

    ввод a[i]

  кц

  ...

кон

2)    Дан массив, содержащий 70 целых чисел. Опишите на одном из языков программирования алгоритм, позволяющий найти и вывести наименьшее положительное нечетное число, содержащееся в массиве. Гарантируется, что в массиве есть хотя бы одно положительное нечетное число. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.

Паскаль

Естественный язык

const N=70;

var

a: array [1..N] of integer;

i, j, m: integer;

begin

  for i:=1 to N do

    readln(a[i]);

end.

Объявляем массив A из 70 элементов.

Объявляем целочисленные переменные I, J, M. В цикле от 1 до 70 вводим элементы массива A с 1-го по 70-й.

...

3)    Дан целочисленный массив из 30 элементов. Элементы массива могут принимать значения от
–1000 до 1000. Опишите на русском языке или на одном из языков программирования алгоритм, который находит и выводит среднее арифметическое всех элементов массива, оканчивающихся цифрой 5. Гарантируется, что хотя бы один такое элемент в массиве есть.

Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.

Паскаль

Естественный язык

const N=30;

var a: array [1..N] of integer;

    i, x, y: integer;

    s: real;

begin

  for i:=1 to N do readln(a[i]);

  ...

end.

Объявляем массив A из 30 элементов. Объявляем целочисленные переменные i, x, y и вещественную переменную s. В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й.

...

 

 

 


 

Ответы

Вариант 1

k:=0;

if a[1] < a[2] then k:=k+1;

for i:=2 to N-1 do

  if (a[i-1] > a[i]) and (a[i] < a[i+1]) then

    k:=k+1;

if a[N-1] > a[N] then k:=k+1;

writeln(k);

const N=70;

var a: array [1..N] of integer;

    і, j, x, y: integer;

begin

  for і:=1 to N do readln(a[i]);

  y:= 0;

  for i:=1 to N-1 do begin

    x:= a[i] + a[i+1];

    if (x mod 2 <> 0) and

       ((y = 0) or (x < y))

       then y:=x

  end;

  writeln(y)

end.

const N=30;

var a: array [1..N] of integer;

    i, k: integer;

    s, min: real;

begin

  for i:=1 to N do readln(a[i]);

  s:=0;

  for i:=1 to N do s:=s+a[i];

  s:=s/N;

  k:=1;

  for i:=2 to N do

    if abs(a[i]-s) < abs(a[k]-s) then

      k:=i;

  writeln(k)

end.

Вариант 2

k:=0;

for i:=1 to N div 2 do

  if a[i]+a[N+1-i] > 20 then

    k:= k + 1;

writeln(k);

Второй вариант – использовать вспомогательную переменную j, которая будет изменяться, начиная с N, и уменьшаться на 1 с каждым шагом цикла:

k:= 0;

j:= N;

for i:=1 to N div 2 do begin

  if a[i]+a[j] > 20 then

    k:= k + 1;

  j:= j - 1

end;

writeln(k);

const N=70;

var a: array [1..N] of integer;

    і, j, x, y: integer;

begin

  for і:=1 to N do readln(a[i]);

  x:= a[1]; y:= a[1];

  for i:=1 to N do begin

    if a[i] > x then x:= a[i];

    if a[i] < y then y:= a[i];

  end;

  writeln(x-y)

end.

const N=30;

var a: array [1..N] of integer;

    i, k, min, min2: integer;

begin

  for i:=1 to N do readln(a[i]);

  if a[1] < a[2] then begin

    min := 1; min2:= 2

  end

  else begin

    min:= 2; min2:= 1

  end;

  for i:=3 to N do

    if a[i] < a[min] then begin

      min2 := min;

      min := i

    end

    else if a[i] < a[min2] then min2 := i;

  writeln(min, ' ', min2)

end.

 

 

Вариант 3

k:=0;

for i:=2 to N do

  if a[i] > 2*a[i-1] then

    k:=k+1;

writeln(k);

Еще один вариант правильного решения, использующий деление:

k:=0;

for i:=2 to N do

  if a[i]/a[i-1] > 2 then

    k:=k+1;

writeln(k);

const N=70;

var a: array [1..N] of integer;

    і, j, m: integer;

begin

  for і:=1 to N do readln(a[i]);

  m:= 0;

  for i:=1 to N do

  if (a[i] > 0) and (a[i] mod 10 = 7) and

     ((a[i] < m) or (m = 0)) then

    m:= a[i];

  writeln(m)

end.

const N=30;

var a: array [1..N] of integer;

    i, j, min, min2, s: integer;

begin

  for i:=1 to N do readln(a[i]);

  min:=1; min2:=2;

  s:=abs(a[1]-a[2]);

  for i:=1 to N-1 do

    for j:=i+1 to N do

      if abs(a[i]-a[j]) < s then begin

        s:=abs(a[i]-a[j]);

        min:=i; min2:=j

      end;

  writeln(min);

  writeln(min2)

end.

Вариант 4

const N=2014;

var a: array [1..N] of integer;

    i, j, s: integer;

begin

  for i:=1 to N do

   readln(a[i]);

  s:=0;

  for i:=1 to 2014 do

  if (100 <= a[i]) and (a[i] <= 999) and

     (a[i] mod 10 = 9) and

     (a[i] mod 100 <> 99)

    then s := s + a[i];

  if s = 0 then

       writeln(-1)

  else writeln(s)

end.

const N=70;

var a: array [1..N] of integer;

    і, j, m: integer;

begin

  for і:=1 to N do readln(a[i]);

  m:= 0;

  for i:=1 to N do

  if (a[i] > 0) and (a[i] mod 2 = 1) and

     ((a[i] < m) or (m = 0)) then

    m:= a[i];

  writeln(m)   end.

const N=30;

var a: array [1..N] of integer;

    i, k, min, min2: integer;

begin

  for i:=1 to N do readln(a[i]);

  if a[1] < a[2] then begin

    min := 1; min2:= 2

  end

  else begin

    min:= 2; min2:= 1

  end;

  for i:=3 to N do

    if a[i] < a[min] then begin

      min2 := min;

      min := i

    end

    else if a[i] < a[min2] then min2 := i;

  writeln(min, ' ', min2)   end.