СДАМ ГИА: РЕШУ ЕГЭ
Образовательный портал для подготовки к экзаменам
Информатика
≡ информатика
сайты - меню - вход - новости




Задания
Версия для печати и копирования в MS Word
Задание 25 № 6904

Дан массив, содержащий 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 < N; i++)

cin >> a[i];

}

алг

нач

цел N=2014

вещтаб a[1:N]

вещ d, r;

цел i, j, k

нц для i от 1 до N

ввод a[i]

кц

кон

Python

# допускается также

# использовать

# целочисленные переменные j, k

# и вещественные переменные d, r

a = []

n = 2014

for i in range(0, n):

a.append(int(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=fabs(a[1]-a[0]);

j=1; k=2;

for (i=1; i < N-1; ++i) {

d=fabs(a[i+1]-a[i]);

if (d < r) {

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

 

 

Допускаются и другие способы решения, если они соответствуют указанным в условии ограничениям и приводят к правильному ответу.