Клавиши клавиатуры, в зависимости от их назначения и расположения, можно поделить на группы: -Алфавитно-цифровые; -Функциональные; -Блок дополнительных клавиш (цифровая панель); -Клавиши управления курсором; -Служебные (клавиши управления). -Алфавитно-цифровые клавиши. Назначение: ввод букв, цифр, знаков препинания и других специальных знаков. В эту категорию также относится клавиша SPACE (ПРОБЕЛ). -Функциональные клавиши Сюда относят клавиши F1-F12. За данными клавишами нет постоянных закрепленных функций (исключением является только клавиша F1, которая используется для получения справки). Эти клавиши, как правило, программируются уже пользователем для каждой программы отдельно. -Блок дополнительных клавиш (цифровая панель) Повторяют действие цифровых и некоторых знаковых клавиш основной панели Даная панель может использоваться в двух режимах: * Ввода цифр; * Управления курсором. Переключения режимов осуществляется клавишей NUM LOCK -Клавиши управления курсором Курсор — экранный указатель, который показывает место ввода следующего символа (для текста) или текущую позицию (точку), к которой будет применяться действие мыши. Клавиши со стрелками служат для перемещения курсора на одну позицию по экрану монитора в соответствии с направлением. Клавиши PAGEUP и PAGEDOWN3 переводят курсор на одну страницу вверх и вниз соответственно, а клавиши HOME и END переводят курсор в начало и конец текущей строки. Клавиша INSERT переключает режима ввода данных: вставка и замена ( в режиме вставки новые знаки вводятся без замены существующих символов, а в режиме замены — заменяют). Клавиша DELETE удаляет знаки, которые находятся справа от текущего положения курсора, а клавиша BACKSPACE удаляет знаки, которые находятся слева от текущего положения курсора.
var a, b: array[1..n] of integer; i, j, step, t: integer; flag: boolean;
begin Randomize; Writeln('Исходные элементы массива'); for i := 1 to n do begin a[i] := Random(10) - 5; Write(a[i]:4) end; { Сортируем массив (метод Шелла) } step := n div 2; while step > 0 do begin for j := n - step downto 1 do begin i := j; while i <= n - step do begin if a[i] > a[i + step] then begin t := a[i]; a[i] := a[i + step]; a[i + step] := t end; i := i + step end end; step := step div 2 end; { проходим по массиву и если элемент встречается более одного раза подряд, переносим его в другой массив } j := 0; t := a[1]; flag := false; for i := 2 to n do begin if (a[i] = t) and (not flag) then begin j := j + 1; b[j] := t; flag := true end else begin flag := false; t := a[i] end end; Writeln; Writeln('Отобранные элементы массива'); for i := 1 to j do Write(b[i]:4); Writeln end.
n = 15;
var
a, b: array[1..n] of integer;
i, j, step, t: integer;
flag: boolean;
begin
Randomize;
Writeln('Исходные элементы массива');
for i := 1 to n do
begin
a[i] := Random(10) - 5;
Write(a[i]:4)
end;
{ Сортируем массив (метод Шелла) }
step := n div 2;
while step > 0 do
begin
for j := n - step downto 1 do
begin
i := j;
while i <= n - step do
begin
if a[i] > a[i + step] then
begin
t := a[i]; a[i] := a[i + step]; a[i + step] := t
end;
i := i + step
end
end;
step := step div 2
end;
{
проходим по массиву и если элемент встречается более одного раза подряд,
переносим его в другой массив
}
j := 0; t := a[1]; flag := false;
for i := 2 to n do
begin
if (a[i] = t) and (not flag) then
begin
j := j + 1; b[j] := t; flag := true
end
else begin flag := false; t := a[i] end
end;
Writeln;
Writeln('Отобранные элементы массива');
for i := 1 to j do Write(b[i]:4);
Writeln
end.
Тестовое решение:
Исходные элементы массива
-2 4 1 -3 -1 -2 -5 -1 2 4 1 3 -5 -2 -3
Отобранные элементы массива
-5 -3 -2 -1 1 4