Задача №25. Написание фрагмента программы.
Автор материалов - Лада Борисовна Есакова.
В задачах этого типа встречаются следующие основные алгоритмические (программные) блоки:
Перебор элементов массива
Для одномерного массива запускается цикл по всем его элементам.
Для двумерного массива – цикл в цикле по строкам и столбцам.
Для n-мерного массива – n вложенных циклов.
Перебор элементов массива, удовлетворяющих условию
Для перебора элементов массива, удовлетворяющих условию (например, только четных), в начале цикла устанавливается условие. Тогда все дальнейшие действия выполняются только при выполнении этого условия. Если же условие не выполняется, цикл переходит к следующему элементу массива.
Обмен местами элементов массива
Производится аналогично обмену значениями переменных. Если нужно поменять местами n-й и k-й элементы массива, то n-й элемент сохраняется в буферную переменную, затем значение k-го элемента копируется в n-й, а значение буферной переменной копируется в k-й элемент.
Поиск максимального (минимального) элемента массива
При поиске максимального элемента массива за предполагаемый максимум берется первый элемент массива или число, заведомо меньшее любого элемента массива. Затем каждый следующий элемент массива сравнивается с предполагаемым максимумом, и если значение этого элемента больше, то оно становится новым предполагаемым максимумом.
Аналогично, при поиске минимального элемента массива за предполагаемый минимум берется первый элемент массива или число, заведомо большее любого элемента массива. Затем каждый следующий элемент массива сравнивается с предполагаемым минимумом, и если значение этого элемента меньше, то оно становится новым предполагаемым минимумом.
Вычисление суммы элементов массива
Сначала переменной, выделенной под хранение суммы, присваивается значение 0. Затем, при последовательном переборе элементов массива, значение суммы складывается со значением текущего элемента массива и становится новым значением суммы.
Вычисление произведения элементов массива
Сначала переменной, выделенной под хранение произведения, присваивается значение 1. Затем, при последовательном переборе элементов массива, значение произведения умножается на значение текущего элемента массива и становится новым значением произведения.
Вычисление среднего значения
При вычислении среднего значения выполняется вычисление суммы, а затем сумма делится на количество элементов массива.
Необходимо учитывать, что если в используемом языке программирования есть готовые функции для обработки массивов, то их использовать при решении задачи нельзя.
Пример 1.
Дан целочисленный массив из 20 элементов. Элементы массива могут принимать целые значения от –10 000 до 10 000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество пар элементов массива, в которых хотя бы одно число делится на 3. В данной задаче под парой подразумевается два подряд идущих элемента массива. Например, для массива из пяти элементов: 6; 2; 9; –3; 6 – ответ: 4.
Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования и естественного языка. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.
Бейсик
|
Python
|
CONST N AS INTEGER = 20
DIM A (1 TO N) AS INTEGER
DIM I AS INTEGER,
J AS INTEGER,
K AS INTEGER
FOR I = 1 TO N
INPUT A(I)
NEXT I
...
END |
# допускается также
# использовать две
# целочисленные переменные j и k
a = []
n = 20
for i in range(0, n):
a.append(int(input()))
... |
Паскаль
|
Алгоритмический язык
|
const
N = 20;
var
a: array [1..N] of integer;
i, j, k: integer;
begin
for i := 1 to N do
readln(a[i]);
...
end. |
алг
нач
цел N = 20
целтаб a[1:N]
цел i, j, k
нц для i от 1 до N
ввод a[i]
кц
...
кон |
Си
|
Естественный язык
|
#include
#define N 20
int main() {
int a[N];
int i, j, k;
for (i = 0; i < N; i++)
scanf("%d", &a[i]);
...
return 0;
} |
Объявляем массив A из 20 элементов.
Объявляем целочисленные переменные I, J, K.
В цикле от 1 до 20 вводим элементы массива A с 1-го по 20-й.
…
|
В качестве ответа Вам необходимо привести фрагмент программы (или описание алгоритма на естественном языке), который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например Free Pascal 2.6) или в виде блок-схемы. В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии (например, в образце, записанном на естественном языке).
Решение:
Пример программы на языке Паскаль
k := 0;
for i := 1 to N-1 do
if (a[i] mod 3=0) or (a[i+1] mod 3=0) then
inc(k);
writeln(k);
Пример2.
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 1000. Элемент массива называется хорошим, если это двузначное число, причём цифра в разряде десятков больше, чем цифра в разряде единиц. Опишите на одном из языков программирования алгоритм, позволяющий найти и вывести сумму всех хороших элементов массива.
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
Бэйсик
|
Паскаль
|
N=30
DIM A(N) AS INTEGER
DIM I, J, S AS INTEGER
FOR I = 1 TO N
INPUT A(I)
NEXT I
...
END |
const
N=30;
var
a: array [1..N] of integer;
i, j, s: integer;
begin
for i:=l to N do
readln(a[i]) ;
end. |
Си
|
Алгоритмический язык
|
#include <stdio.h>
#define N 30
void main(){
int a[N];
int i, j, s;
for (i=0; i < N; i++)
scanf("%d", &a[i]);
... |
алг
нач
цел N=30
целтаб а[1:N]
цел i, j, s
нц для i от 1 до N
ввод а[i]
кц
кон |
В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Free Pascal 2.4) или в виде блок-схемы. В этом случае вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии.
Решение:
Пример программы на языке Паскаль
s: =0;
for i:=1 to N do begin
if (10<=a[i]) and (a[ i ] <= 9 9) and
((a[i] div 10) > (a[i] mod 10) ) then s:=s+a[i];
end;
writeln(s);
Ты нашел то, что искал? Поделись с друзьями!
Благодарим за то, что пользуйтесь нашими публикациями.
Информация на странице «Задача №25. Написание фрагмента программы.» подготовлена нашими редакторами специально, чтобы помочь вам в освоении предмета и подготовке к экзаменам.
Чтобы успешно сдать нужные и поступить в высшее учебное заведение или колледж нужно использовать все инструменты: учеба, контрольные, олимпиады, онлайн-лекции, видеоуроки, сборники заданий.
Также вы можете воспользоваться другими материалами из данного раздела.
Публикация обновлена:
07.06.2023