Опишите на русском языке или одном из языков программирования алгоритм вычисления разности максимального среди элементов, имеющих четные значения, и максимального среди элементов, имеющих нечетные значения, в заданном целочисленном массиве из 30 положительных элементов (в предположении, что в массиве есть и четные, и нечетные элементы).
💡 Пошаговый разбор и решение:
Введем целочисленные переменные MaxEv и MaxOdd, в которые будем заносить соответственно значения максимального четного и максимального нечетного элемента в просмотренной части массива и присвоим им начальное значение 0. В цикле до конца массива: проверяем, является ли очередной элемент четным. Если да, то сравниваем его с MaxEv, если он больше, заносим его значение в переменную MaxEv. Если же элемент нечетен, то сравниваем его с MaxOdd, если он больше, заносим его значение в переменную MaxOdd. По окончании цикла выводим разность MaxEv-MaxOdd. Для определения четности значения элемента массива можно воспользоваться либо стандартной функцией (if not odd (a[I]) then...), либо операцией определения остатка от деления Ha 2(if а [ I ] mod 2 = 0 then...), либо, как приведено в программе ниже, операцией целочисленного деления. Пример правильной и эффективной программы (на основе алгоритма, использующего однократный проход по массиву):
ПРОГРАММА НА ПАСКАЛЕ | ПРОГРАММА НА БЕЙСИКЕ
Const N = 30;
Var a:array [1..N] of integer;
MaxEv, MaxOdd, I: integer;
begin
MaxEv :=0;
MaxOdd :=0;
for I := 1 to N do
readln(a[I]);
for I := 1 to N do
begin
if (a[I] div 2)*2 = a[I] then
begin
if a[I] > MaxEv then
MaxEv := a [ I] ;
end
else
if a[I] > MaxOdd then
MaxOdd := a[I];
end;
writeln (MaxEv- MaxOdd);
end. |
N = 30
DIM I, MaxEv, MaxOdd, A(N) AS
INTEGER
MaxEv = 0
MaxOdd = 0
FOR I = 1 TO N
INPUT A(I)
FOR I = 1 TO N
IF (A(I)\2)*2 = A(I) THEN
IF A(I) > MaxEv THEN
MaxEv = A(I)
ENDIF
ELSE
IF A(I) > MaxOdd THEN
MaxOdd = A(I)
ENDIF
ENDIF
NEXT I
PRINT MaxEv- MaxOdd
END
ПРОГРАММА НА ПАСКАЛЕ | ПРОГРАММА НА БЕЙСИКЕ
Const N = 30;
Var a:array [1..N] of integer;
MaxEv, MaxOdd, I: integer;
begin
MaxEv :=0;
MaxOdd :=0;
for I := 1 to N do
readln(a[I]);
for I := 1 to N do
begin
if (a[I] div 2)*2 = a[I] then
begin
if a[I] > MaxEv then
MaxEv := a [ I] ;
end
else
if a[I] > MaxOdd then
MaxOdd := a[I];
end;
writeln (MaxEv- MaxOdd);
end. |
N = 30
DIM I, MaxEv, MaxOdd, A(N) AS
INTEGER
MaxEv = 0
MaxOdd = 0
FOR I = 1 TO N
INPUT A(I)
FOR I = 1 TO N
IF (A(I)\2)*2 = A(I) THEN
IF A(I) > MaxEv THEN
MaxEv = A(I)
ENDIF
ELSE
IF A(I) > MaxOdd THEN
MaxOdd = A(I)
ENDIF
ENDIF
NEXT I
PRINT MaxEv- MaxOdd
END
📚 Похожие разобранные задания по предмету:
ID 30023 • Задание №5
У исполнителя Квадр две команды, которым присвоены номера:
1. прибавь 1,
2. возведи в квадрат.
Первая из э...
ID 29983 • Задание №5
Автомат получает на вход трёхзначное число. По этому числу строится новое число по следующим правилам.
1. Пер...
Официальные критерии проверки ФИПИ:
Критерии проверки:
Критерии оценивания выполнения задания | Баллы
Предложен правильный алгоритм, выдающий верное значение. Допускается запись алгоритма на другом языке, использующая аналогичные переменные. В случае, если язык программирования использует типизированные переменные, описания переменных должны быть аналогичны описаниям переменных на естественном языке. Использование нетипизированных или необъявленных переменных возможно только в случае, если это допускается языком программирования, при этом количество переменных и их идентификаторы должны соответствовать условию задачи. В алгоритме, записанном на языке программирования, допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора программы. | 2
В любом варианте решения может присутствовать не более одной ошибки из числа следующих:
1) не инициализируется или неверно инициализируется переменная;
2) при выводе ответа не учитывается, что требуемого числа в массиве может не быть;
3) отсутствует вывод ответа;
4) в сравнении перепутан знак;
5) неверно осуществляется проверка делимости;
6) на делимость проверяется не значение элемента, а его индекс;
7) в сложном условии вместо логической операции «И» используется логическая операция «ИЛИ»;
8) используется переменная, не объявленная в разделе описания переменных;
9) не указано или неверно указано условие завершения цикла;
10) индексная переменная в цикле не меняется (например, в цикле while) или меняется неверно;
11) неверно расставлены операторные скобки | 1
Ошибок, перечисленных в п. 1–11, две или больше, или алгоритм сформулирован неверно | 0
Максимальный балл | 2
Критерии оценивания выполнения задания | Баллы
Предложен правильный алгоритм, выдающий верное значение. Допускается запись алгоритма на другом языке, использующая аналогичные переменные. В случае, если язык программирования использует типизированные переменные, описания переменных должны быть аналогичны описаниям переменных на естественном языке. Использование нетипизированных или необъявленных переменных возможно только в случае, если это допускается языком программирования, при этом количество переменных и их идентификаторы должны соответствовать условию задачи. В алгоритме, записанном на языке программирования, допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора программы. | 2
В любом варианте решения может присутствовать не более одной ошибки из числа следующих:
1) не инициализируется или неверно инициализируется переменная;
2) при выводе ответа не учитывается, что требуемого числа в массиве может не быть;
3) отсутствует вывод ответа;
4) в сравнении перепутан знак;
5) неверно осуществляется проверка делимости;
6) на делимость проверяется не значение элемента, а его индекс;
7) в сложном условии вместо логической операции «И» используется логическая операция «ИЛИ»;
8) используется переменная, не объявленная в разделе описания переменных;
9) не указано или неверно указано условие завершения цикла;
10) индексная переменная в цикле не меняется (например, в цикле while) или меняется неверно;
11) неверно расставлены операторные скобки | 1
Ошибок, перечисленных в п. 1–11, две или больше, или алгоритм сформулирован неверно | 0
Максимальный балл | 2
🔗 Другие задания линии №25 по предмету Информатика:
ID 34189
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие симво...
ID 34190
Маска числа — это последовательность цифр, в которой могут встречаться специальные символы «?»...
ID 34191
Маска числа — это последовательность цифр, в которой могут встречаться специальные символы «?»...
ID 34192
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие симво...
ID 34193
Маска числа — это последовательность цифр, в которой могут встречаться специальные символы «?»...