Const
n = 10;
var
a: array[1..n] of integer;
i, j, t: integer;
begin
Randomize;
Writeln('Исходный массив');
for i := 1 to n do
begin
a[i] := Random(16)-10;
Write(a[i]:4)
end;
Writeln;
for i := 1 to n-1 do
for j := 1 to n-i do
if a[j] > a[j+1] then
begin t := a[j]; a[j] := a[j+1]; a[j+1] := t end;
Writeln('Отсортированный по возрастанию массив');
for i := 1 to n do Write(a[i]:4);
Writeln
end.
<em><u>Тестовое решение:</u></em>
Исходный массив
-10 -9 2 -3 -6 -10 -2 5 4 0
Отсортированный по возрастанию массив
-10 -10 -9 -6 -3 -2 0 2 4 5
Ответ:
за 16 минут и 40 секунд
Объяснение:
500 Кбайт = 500 · 1024 = 512 000 байт
<em>Количество информации делим на пропускную способность:</em>
512 000 : 512 = 1000 с
1000 с = 16 минут 40 секунд
<u>PascalABC.NET 3.3.5, сборка 1640 от 17.03.2018</u>
<u>Внимание! Если программа не работает, обновите версию!</u>
begin
var a:=ReadlnString;
var (m,n):=ReadInteger2('Введите через пробел m и n:');
Swap(a[m],a[n]); a.Println;
end.
<u>Пример</u>
Информатика
Введите через пробел m и n: 5 2
Ирфонматика
Program task_1;
var
A, B, C : integer;
begin
read(A);
B := A;
C := 0;
While B <> 0 do
begin
C := C*10 + B mod 10;
B := B div 10
end;
If A=C then
begin
writeln('Число симметрично')
end
else
begin
writeln('Число НЕ симметрично')
end;
end.
1. Из-за ошибок программа не запустится.
- в блоке описания переменных отсутствует var
- clrscr не будет работать без подключенного модуля CRT. Да она и не особо нужна для решения этой задачи. Как и не нужен readln в предпоследней строке.
2. После устранения недостатков получим, что первый цикл:
Заполняет массив сл. значениями и выводит его на экран в одной строке.
for i:=1 to 10 do
begin
a[i]:=random(21)-10;
write(a[i]);
end;
3. Следующие строки кода делают реверс 1-ой половины массива:
//надо, чтобы a[1] стало a[5], a[5] стало a[1], a[2] cтало a[4], a[4] стало a[2],
//элемент a[3] не трогаем, так как он находится посередине и его не с кем менять
n:=0; //вспомогательная переменная, которая будет увеличиваться на 1 при //каждом выполнении тела цикла
for i:=1 to 2 do
begin
k:=a[i]; // в переменной k запоминаем значение a[i]
a[i]:=a[5-n]; // теперь a[i] = a[5-n]
a[5-n]:=k; // А элемент a[5-n] = бывшему значению a[i], которое сохранили в k
n:=n+1; //Для работы со следующей парой элементов увеличиваем n на 1
end;
4. За реверс второй половины отвечает этот код:
n:=0;
for i:=6 to 8 do
begin
k:=a[i];
a[i]:=a[10-n];
a[10-n]:=k;
n:=n+1;
end;
5. Ну и последний цикл выводит получившийся массив на экран:
for i:=1 to 10 do write(a[i]);