Сортировка. метод выбора. уровень a. массив содержит четное количество элементов. напишите программу, которая сортирует первую половину массива по возрастанию, а вторую – по убыванию. каждый элемент должен остаться в «своей» половине. пример: массив: 5 3 4 2 1 6 3 2 после сортировки: 2 3 4 5 6 3 2 1 и (подробно,т.к я не понимаю) , нужно. 20
284
334
Ответы на вопрос:
//обьявляем дополнительные переменные и главный массив, а также два дополнительных - они будут "половинками". var a, b, c: array [1..100] of longint; i, min, n, j, t: longint; begin //читаем количество элементов в нашем массиве. readln(n); //читаем массив. for i : = 1 to n do read(a[i]); //заполняем первую "половинку". for i : = 1 to n div 2 do b[i] : = a[i]; //заполняем вторую "половинку". но раз это уже вторая "половинка" главного массива, то и //цикл теперь должен начинаться со второй части массива, а заканчиваться уже в его конце. for i : = n div 2 + 1 to n do c[i - n div 2] : = a[i]; //теперь отсортируем первую "половинку" методом выбора. идея этого метода //основывается на том, что мы ищем минимальный среди неотсортированных элемент, //а затем просто swap-аем его с тем, который стоит сразу после отсортированных. for i : = 1 to (n - 1) div 2 do begin min : = i; for j : = i + 1 to n div 2 do if b[min] > b[j] then min : = j; if min < > i then begin t : = b[i]; b[i] : = b[min]; b[min] : = t; end; end; //затем вторую точно также, только стоит обратить внимание на сравнения. //так как надо отсортировать по убыванию, то теперь сравнение перед "swap"-ом //будет другим. for i : = 1 to (n - 1) div 2 do begin min : = i; for j : = i + 1 to n div 2 do if c[min] < c[j] then min : = j; if min < > i then begin t : = c[i]; c[i] : = c[min]; c[min] : = t; end; end; //а теперь просто по очереди выводим готовые "половинки", не забывая ставить //пробел после вывода каждого элемента. for i : = 1 to n div 2 do write(b[i], ' '); for i : = 1 to n - n div 2 do write(c[i], ' '); end.
Var n: integer; c: string; begin write('введите число от 10 до 9999 -> '); readln(n); str(n,c); writeln('предпоследняя цифра в числе равна ',c[length(c)-1]) end. пример работы программы: введите число от 10 до 9999 -> 1523 предпоследняя цифра в числе равна 2
Популярно: Информатика
-
Bogdan201704.02.2023 02:51
-
камила2005306.07.2021 16:14
-
Lenusea1031.12.2021 11:30
-
valeria800222.11.2022 03:49
-
Машка415531.05.2020 19:19
-
fantastik0308.07.2021 18:14
-
mixakov0523.10.2020 07:14
-
mrgebil16.11.2022 22:42
-
Sofka1112315.06.2020 00:40
-
nastenamolova012.10.2021 17:42