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

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

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

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

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

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

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

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

Итоги урока

Задание 35. Массивы - 6 и задачи

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

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

                                                                                                                                                                                                                                                                                                                                        

Просмотр содержимого документа
«Задание 35. Массивы - 6 и задачи»


Задание 35. Массивы - 6

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

const N=30;

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

і, j, p: longint;

begin

for і := 1 to N do

readln(a[i]);

...

end.

Замечание: вместо readln(a[i])можно в программе заполнять массив случайными числами, но вывести их на экран. Это относится ко всем задачам.

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

const N=30;

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

i,j,s: integer;

begin

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

...

end.

  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.

  1. Дан целочисленный массив из 2000 элементов. Если сумма всех элементов массива чётная, нужно вывести количество нечётных (по значению) элементов массива, если нечётная – количество чётных. Например, для массива из 6 элементов, равных соответственно 2, 6, 12, 17, 3, 8, ответом будет 2 – количество нечётных элементов, так как общая сумма всех элементов чётна.

const N = 2000;

var

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

i, k: integer;

begin

for i := 1 to N do

readln(a[i]);

...

end.

  1. Дан массив, содержащий 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.

Сделать в тетради

  1. Требовалось написать программу, при выполнении которой с клавиатуры вводится натуральное число, не превосходящее 108, и выводится его первая (старшая) цифра. Ученик написал такую программу:

var n: longint;

begin

read(n);

while n10 do begin

n := n mod 10

end;

write(n);

end.

Последовательно выполните следующее.

  1. Напишите, что выведет эта программа при вводе числа 1984.

  2. Приведите пример числа, при вводе которого программа выдаст верный ответ.

  3. Найдите в программе все ошибки (их может быть одна или несколько).

Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.

Обратите внимание: вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки: за исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.

  1. На обработку поступает натуральное число, не превышающее 109. Нужно написать программу, которая выводит на экран максимальную цифру числа, кратную 3. Если в числе нет цифр, кратных 3, требуется на экран вывести «NO». Программист написал программу неправильно. Напоминание: 0 делится на любое натуральное число.

var N,digit,maxDigit: longint;

begin

readln(N);

maxDigit := N mod 10;

while N 0 do begin

digit := N mod 10;

if digit mod 3 = 0 then

if digit maxDigit then

maxDigit := digit;

N := N div 10;

end;

if maxDigit = 0 then

writeln('NO')

else

writeln(maxDigit)

end.

Последовательно выполните следующее.

1. Напишите, что выведет эта программа при вводе числа 134.

2. Приведите пример такого трёхзначного числа, что, несмотря на ошибки, программа печатает правильный ответ.

3. Найдите в программе все ошибки (их может быть одна или несколько). Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.

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

n:= 10; s:= 0;

for i:=1 to n do begin

if A[i]-A[i-1]

s:= s + i;

end;

В начале выполнения этого фрагмента в массиве находились числа Фибоначчи: 1,1,2,3,5,8,13,21,34,55,89, т.е. A[0]=1, A[1]=1, A[2]=2 и т.д. Чему будет равно значение переменной s после выполнения данной программы?

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

c := 0;

for i := 1 to 9 do

if A[i-1] = A[i] then begin

t:= A[i];

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

A[i-1]:= t

end

else

c:= c + 1;

  1. 19-75. В программе описан одномерный целочисленный массив A, в представленном фрагменте программы обрабатываются элементы массива с индексами от 1 до 21.

s:=0;

n:=21;

for i:= 2 to n do begin

s:=s+2*(A[i]-A[i-1]);

end;

В начале выполнения этого фрагмента в элементе массива с индексом i находилось число i (i = 1, …, 21), т. е. A[1] = 1, A[2] = 2 и т. д. Чему будет равно значение переменной s после выполнения данной программы?