Дан массив, содержащий 2014 вещественных чисел. Напишите на одном из языков программирования программу, находящую в этом массиве два соседних элемента, значения которых наименее близки, то есть абсолютная величина их разности максимальна. Если таких пар несколько, можно взять любую из них. Программа должна вывести найденные элементы. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных.
Бейсик | Паскаль
N=2014
DIM A(N) AS SINGLE
DIM D, R AS SINGLE
DIM I, J, K AS INTEGER
FOR I = 1 TO N
INPUT A(I)
NEXT I
…
END
|
const
N=2014;
var
a: array [1..N] of real;
d, r: real;
i, j, k: integer;
begin
for i:=1 to N do
readln(a[i]);
…
end.
Си++ | Алгоритмический язык
#include <iostream>
using namespace std;
#include <math.h>
#define N 2014
int main(){
float a[N];
float d, r;
int i, j, k;
for (i=0; i
Python
# допускается также
# использовать две
# целочисленные переменные j, k
# и вещественные d, r
a = []
n = 2014
for i in range(0, n):
a.append(float(input()))
...
В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например Free Pascal 2.4). В этом случае вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии.
Бейсик | Паскаль
N=2014
DIM A(N) AS SINGLE
DIM D, R AS SINGLE
DIM I, J, K AS INTEGER
FOR I = 1 TO N
INPUT A(I)
NEXT I
…
END
|
const
N=2014;
var
a: array [1..N] of real;
d, r: real;
i, j, k: integer;
begin
for i:=1 to N do
readln(a[i]);
…
end.
Си++ | Алгоритмический язык
#include <iostream>
using namespace std;
#include <math.h>
#define N 2014
int main(){
float a[N];
float d, r;
int i, j, k;
for (i=0; i
Python
# допускается также
# использовать две
# целочисленные переменные j, k
# и вещественные d, r
a = []
n = 2014
for i in range(0, n):
a.append(float(input()))
...
В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например Free Pascal 2.4). В этом случае вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии.
💡 Пошаговый разбор и решение:
Программа рассматривает все пары соседних чисел в массиве, определяет абсолютное значение разности элементов в каждой паре и находит максимум среди этих разностей. Для запоминания и последующего вывода можно хранить индекс первого элемента текущей наиболее подходящей пары, а в конце программы выводить элемент с данным индексом и следующий за ним.
Пример фрагмента программы на Паскале
r:=abs(a[2]-a[1]);
k:=1;
for i:=2 to N-1 do begin
d:=abs(a[i+1]-a[i]);
if d>r then begin
r:=d;
k:=i;
end;
end;
writeln(a[k], ' ', a[k+1]);
В качестве начального значения для максимальной разности можно использовать ноль, но даже в этом случае нужно использовать стартовое значение индекса. Оно будет использовано, если все элементы в массиве окажутся одинаковыми. Можно запоминать не один, а оба индекса найденной пары.
Пример программы на Си
r=0;
j=0; k=1;
for (i=0; ir) {
r=d;
j=i; k=i+1;
}
}
printf("%f %f\n", a[j], a[k]);
Можно хранить не индексы, а значения элементов. Но поскольку разрешено использование только двух вещественных переменных, в этом случае не удастся запоминать разности, их придётся каждый раз вычислять заново.
Пример программы на Алгоритмическом языке
d:=a[1]; r:=a[2]
нц для i от 2 до N-1
если abs(a[i+1]-a{i]) > abs(r-d) то
d:=a[i]
r:=a[i+1]
все
кц
вывод d, " ", r
Допускаются и другие способы решения, если они соответствуют указанным в условии ограничениям и приводят к правильному ответу.
Пример фрагмента программы на Паскале
r:=abs(a[2]-a[1]);
k:=1;
for i:=2 to N-1 do begin
d:=abs(a[i+1]-a[i]);
if d>r then begin
r:=d;
k:=i;
end;
end;
writeln(a[k], ' ', a[k+1]);
В качестве начального значения для максимальной разности можно использовать ноль, но даже в этом случае нужно использовать стартовое значение индекса. Оно будет использовано, если все элементы в массиве окажутся одинаковыми. Можно запоминать не один, а оба индекса найденной пары.
Пример программы на Си
r=0;
j=0; k=1;
for (i=0; ir) {
r=d;
j=i; k=i+1;
}
}
printf("%f %f\n", a[j], a[k]);
Можно хранить не индексы, а значения элементов. Но поскольку разрешено использование только двух вещественных переменных, в этом случае не удастся запоминать разности, их придётся каждый раз вычислять заново.
Пример программы на Алгоритмическом языке
d:=a[1]; r:=a[2]
нц для i от 2 до N-1
если abs(a[i+1]-a{i]) > abs(r-d) то
d:=a[i]
r:=a[i+1]
все
кц
вывод d, " ", r
Допускаются и другие способы решения, если они соответствуют указанным в условии ограничениям и приводят к правильному ответу.
📚 Похожие разобранные задания по предмету:
ID 34583 • Задание №26
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, п...
ID 29456 • Задание №2
Миша заполнял таблицу истинности логической функции
F = ((x → ¬y) ∧ (x ∨ w)) → ¬z,
но успел заполнить лишь...
Официальные критерии проверки ФИПИ:
Критерии проверки:
Критерии оценивания выполнения задания | Баллы
Предложен правильный алгоритм, выдающий верное значение. Допускается запись алгоритма на другом языке, использующая аналогичные переменные. В случае, если язык программирования использует типизированные переменные, описания переменных должны быть аналогичны описаниям переменных на языках, использованных в задании. Использование нетипизированных или необъявленных переменных возможно только в случае, если это допускается языком программирования, при этом количество переменных и их идентификаторы должны соответствовать условию задачи. В алгоритме, записанном на языке программирования, допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора программы. | 2
Предложено в целом верное решение, содержащее не более одной ошибки из числа следующих (если одинаковая ошибка повторяется несколько раз, она считается за одну ошибку):
1) Отсутствие инициализации или неверная инициализация счётчика.
2) Неверно определены границы цикла проверки, в результате проверяются не все пары или происходит выход за границы массива.
3) При вычислении отношения элементов используется целочисленное деление.
4) Подсчитываются пары, в которых второй элемент больше первого.
5) Отсутствует вывод ответа.
6) Используется переменная, не объявленная в разделе описания переменных.
7) Индексная переменная в цикле не меняется (например, в цикле while) или меняется неверно.
| 1
Не выполнены условия, позволяющие поставить 1 или 2 балла | 0
Максимальный балл | 2
Критерии оценивания выполнения задания | Баллы
Предложен правильный алгоритм, выдающий верное значение. Допускается запись алгоритма на другом языке, использующая аналогичные переменные. В случае, если язык программирования использует типизированные переменные, описания переменных должны быть аналогичны описаниям переменных на языках, использованных в задании. Использование нетипизированных или необъявленных переменных возможно только в случае, если это допускается языком программирования, при этом количество переменных и их идентификаторы должны соответствовать условию задачи. В алгоритме, записанном на языке программирования, допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора программы. | 2
Предложено в целом верное решение, содержащее не более одной ошибки из числа следующих (если одинаковая ошибка повторяется несколько раз, она считается за одну ошибку):
1) Отсутствие инициализации или неверная инициализация счётчика.
2) Неверно определены границы цикла проверки, в результате проверяются не все пары или происходит выход за границы массива.
3) При вычислении отношения элементов используется целочисленное деление.
4) Подсчитываются пары, в которых второй элемент больше первого.
5) Отсутствует вывод ответа.
6) Используется переменная, не объявленная в разделе описания переменных.
7) Индексная переменная в цикле не меняется (например, в цикле while) или меняется неверно.
| 1
Не выполнены условия, позволяющие поставить 1 или 2 балла | 0
Максимальный балл | 2
🔗 Другие задания линии №25 по предмету Информатика:
ID 34189
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие симво...
ID 34190
Маска числа — это последовательность цифр, в которой могут встречаться специальные символы «?»...
ID 34191
Маска числа — это последовательность цифр, в которой могут встречаться специальные символы «?»...
ID 34192
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие симво...
ID 34193
Маска числа — это последовательность цифр, в которой могут встречаться специальные символы «?»...