у масиві А(n) з неповторюваними елементами вибрати два найближчі за значенням елементи, менші з них помістити на перше місце, а більші-на друге місце в
10-11 класс
|
масиві;інші елементи масива А не змінювати.
const
k = 100;
var
a: array[1..k] of integer;
i, j, n, n1, n2, in1, in2, d, d1: integer;
begin
writeln('Введите количество элементов в массиве: ');
read(n);
writeln('Введите исходный массив: ');
for i := 1 to n do read(a[i]);
{Найдем элементы с минимальной разностью}
d := 1000;
for i := 1 to n - 1 do
for j := i + 1 to n do
begin
d1 := abs(a[j] - a[i]);
if d1 < d then
begin
n1 := a[i]; in1 := i;
n2 := a[j]; in2 := j;
d := d1
end
end;
{Теперь элемент, который должен быть помещен на первое место,
находтся в n1, а его номер - в in1. n2 и in2 - значение и
номер в массиве второго элемента.
Будем сдвигать элементы массива к концу.
Элементы с номером, большим in2, уже на своем месте.
Элементы с номерами от in1+1 до in2-1 сдвигаем на 1 к концу.
Затем элементы с номерами от 1 до in1-1 сдвигаем на 2 к концу.
Останется поместить n1 на первое место и n2 на второе}
for i := in2 - 1 downto in1 + 1 do a[i + 1] := a[i];
for i := in1 - 1 downto 1 do a[i + 2] := a[i];
a[1] := n1;
a[2] := n2;
write('Результирующий массив: ');
for i := 1 to n do write(a[i], ' ');
writeln
end.
Тестовое решение:
Введите количество элементов в массиве:
10
Введите исходный массив:
8 11 23 15 21 17 32 16 1 5
Результирующий массив: 15 16 8 11 23 21 17 32 1 5
#include<iostream>
#include<locale>
#include<cstdlib>
#include<ctime>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
Другие вопросы из категории
Определить значение переменной y после выполнения следующих элементов программы:
x:=0;
y:=5;
repeat
y:=2*y;
x:=x+y
until y>5;
program mas55;
const n=5;
type st=array[1..n] of real;
var i,j,d:integer;
b:st;
a:array[1..n] of st;
begin
for i:=1 to n do
for j:=1 to n do if j=3 then a[i,j]:=sqr(i)*j else a[i,j]:=2;
for i:=1 to n do
begin
for j:=1 to n do write (a[i,j]:6);
writeln
end;
writeln;
b:=a[3];
a[3]:=a[4];
a[4]:=b;
for i:=1 to n do
begin
for j:=1 to n do write (a[i,j]:6);
writeln;
for i:=1 to n do
begin
d:=a[i,3];
a[i,3]:=a[i,5];
a[i,5]:=d
end;
for i:=1 to n do
begin
for j:=1 to n do write (a[i,j]:6);
writeln
end;
writeln
end
end.
Читайте также
Дано масив А[1..n]. Скласти програму підрахунку суми всіх елементів, що знаходяться між елементами А[1] і А[n].
елементів, то замість масива В написати елемент m=0.
нульових елементів, то замість масива В написати елемент m=0.
чисел. Знайти найбільший додатний елемент і найменший від’ємний елементи масиву.