Дан массив, содержащий неотрицательные целые числа. Если сумма всех элементов массива чётная, нужно вывести количество чётных (по значению) элементов массива, если нечётная – количество нечётных.
Например, для массива из 6 элементов, равных соответственно 2, 6, 12, 17, 3, 8, ответом будет 4 – количество чётных элементов, так как общая сумма всех элементов чётна.
Напишите на одном из языков программирования программу для решения этой задачи. Исходные данные объявлены так, как показано ниже.
Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных.
DIM A(N) AS INTEGER
DIM I, K AS INTEGER
a: array [1..N] of integer;
Алгоритмический язык
Python
цел N=2000 | Изменять значение этой переменной нельзя
нц для i от 1 до N
// допускается также использовать
// целочисленные переменные i, k
N=2000 //менять значение N нельзя
for i in range(0, N):
using namespace std;
В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Free Pascal 2.6). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в приведённых фрагментах.
На первый взгляд для решения задачи нужны 4 переменных: счётчик для перебора элементов, счётчики чётных и нечётных элементов, сумма всех элементов, но в условии разрешено использовать только 2 переменные.
Чтобы обойти это ограничение, заметим, что на самом деле достаточно подсчитывать только количество нечётных элементов. Значение суммы можно не вычислять, так как требуется только чётность суммы, а она однозначно определяется количеством нечётных элементов. Количество чётных элементов, если оно потребуется, можно вычислить, зная общее число элементов и количество нечётных.
Эта идея реализована в следующем фрагменте на языке Паскаль.
for i:=1 to N do begin
if a[i] mod 2 = 1 then k:=k+1;
Возможно также двухпроходное решение: на первом проходе определяется общая сумма, на втором количество элементов нужной чётности.
Эта идея реализована в следующем фрагменте на алгоритмическом языке.
Источник
Дан массив n вывести все неотрицательные числа
Дан массив, содержащий неотрицательные целые числа. Необходимо вывести:
— максимальный чётный элемент, если количество чётных элементов не меньше, чем нечётных;
— максимальный нечётный элемент, если количество нечётных элементов больше, чем чётных.
Например, для массива из шести элементов, равных соответственно 4, 6, 12, 17, 3, 8, ответом будет 12 — наибольшее чётное число, поскольку чётных чисел в этом массиве больше.
Напишите на одном из языков программирования программу для решения этой задачи. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных переменных.
Бейсик
Паскаль
DIM A(N) AS INTEGER
DIM I, J, K, M AS INTEGER
a: array [1..N] of integer;
i, j, k, m: integer;
using namespace std;
цел N=2000 | Изменять значение этой переменной нельзя
нц для i от 1 до N
// допускается также использовать
// целочисленные переменные j, k, m
n = 2000 // менять значение n нельзя
for i in range(0, n):
В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Free Pascal 2.6). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в приведённых фрагментах.
Чтобы за один проход определить количество чётных и нечётных элементов и соответствующие им максимумы, нужны 5 переменных (два счётчика, два максимума и индекс), а в условии разрешено использовать только 4. Чтобы обойти это ограничение, заметим, что, поскольку общее количество элементов известно, можно подсчитывать количество только в одной группе. Эта идея реализована в следующем фрагменте на языке Паскаль.
Возможно также двухпроходное решение: на первом проходе определяется количество чётных и нечётных элементов, на втором определяется максимум в соответствующей группе. Эта идея реализована в следующем фрагменте на алгоритмическом языке.
Паскаль
j:=0; k:=0; m:=0;
for i:=1 to N do begin
if a[i] mod 2 = 0 then begin
if a[i]>k then k:=a[i];
else if a[i]>m then m:=a[i];
else writeln(m);
Алгоритмический язык
j:=0; k:=0
нц для i от 1 до N
нц для i от 1 до N
1. В алгоритме, записанном на языке программирования, допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора программы. 2. Эффективность алгоритма не имеет значения и не оценивается.
3. Допускается запись алгоритма на языке программирования, отличном от языков, перечисленных в условии. В этом случае должны использоваться переменные, аналогичные описанным в условии. Если язык программирования использует типизированные переменные, описания переменных должны быть аналогичны описаниям переменных в приведенных фрагментах. Использование нетипизированных или необъявленных переменных возможно только в случае, если это допускается языком программирования; при этом количество переменных и их идентификаторы должны соответствовать условию задачи.
Критерии оценивания выполнения задания
Баллы
Предложен правильный алгоритм, выдающий верное значение.
2
Не выполнены условия, позволяющие поставить 2 балла. Предложено в целом верное решение, содержащее не более одной ошибки из числа следующих.
1. Отсутствие инициализации или неверная инициализация одной или нескольких переменных (например, инициализация максимума первым элементом без учёта чётности).
2. Ошибка в сравнениях, в результате которой выводится минимум вместо максимума или максимум меньшей группы вместо большей.
3. Использование строгого сравнения вместо нестрогого или наоборот.
4. Ошибка при определении чётности элементов, в том числе проверка на чётность индекса вместо элемента.
5. Отсутствует вывод ответа.
6. Используется переменная, не объявленная в разделе описания переменных.
Источник
Дан массив n вывести все неотрицательные числа
Дан массив, содержащий неотрицательные целые числа, не превышающие 10 000. В массиве присутствуют чётные и нечётные числа. Необходимо вывести:
— минимальный чётный элемент, если количество чётных элементов не больше, чем нечётных;
— минимальный нечётный элемент, если количество нечётных элементов меньше, чем чётных.
Например, для массива из шести элементов, равных соответственно 4, 6, 12, 17, 9, 8, ответом будет 9 — наименьшее нечётное число, поскольку нечётных чисел в этом массиве меньше.
Напишите на одном из языков программирования программу для решения этой задачи. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных переменных.
Бейсик
Паскаль
DIM A(N) AS INTEGER
DIM I, J, K, M AS INTEGER
a: array [1..N] of integer;
i, j, k, m: integer;
using namespace std;
цел N=2000 | Изменять значение этой переменной нельзя
нц для i от 1 до N
# допускается также использовать
# целочисленные переменные j, k, m
n = 2000 # менять значение n нельзя
for i in range(0, n):
В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Free Pascal 2.6). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в приведённых фрагментах.
Чтобы за один проход определить количество чётных и нечётных элементов и соответствующие им минимумы, нужны 5 переменных (два счётчика, два минимума и индекс), а в условии разрешено использовать только 4. Чтобы обойти это ограничение, заметим, что, поскольку общее количество элементов известно, можно подсчитывать количество только в одной группе. Эта идея реализована в следующем фрагменте на языке Паскаль.
Возможно также двухпроходное решение: на первом проходе определяется количество чётных и нечёных элементов, на втором определяется минимум в соответствующей группе. Эта идея реализована в следующем фрагменте на алгоритмическом языке.