В
Все
У
Українська література
Г
Геометрия
Д
Другие предметы
Э
Экономика
Г
География
О
ОБЖ
М
Математика
М
МХК
Х
Химия
Қ
Қазақ тiлi
Л
Литература
У
Українська мова
О
Обществознание
Ф
Физика
А
Английский язык
А
Алгебра
И
История
Б
Беларуская мова
Б
Биология
М
Музыка
П
Право
И
Информатика
П
Психология
В
Видео-ответы
Н
Немецкий язык
Ф
Французский язык
О
Окружающий мир
Р
Русский язык
MegaCrisp1
MegaCrisp1
02.03.2020 22:42 •  Информатика

Уровень b. напишите программу, которая заполняет массив из n = 10 элементов случайными числами в диапазоне [10,100] и сортирует его по возрастанию последней цифры числа (сначала идут все числа, которые заканчиваются на 0, потом все, которые заканчиваются на 1, и т. пример: массив: 12 10 31 40 55 63 28 87 52 92 после сортировки: 10 40 31 12 52 92 63 55 87 28 паскаль(старая версия)

Ответ:
vikulyagorobet
vikulyagorobet
16.01.2024 22:56
Конечно, я буду рад помочь! Для решения этой задачи можно использовать алгоритм сортировки подсчётом.

Шаг 1: Создайте массив из 10 элементов.
Шаг 2: Заполните массив случайными числами в диапазоне от 10 до 100.
Шаг 3: Создайте вспомогательный массив, состоящий из 10 списков.
Шаг 4: Пройдитесь по исходному массиву и для каждого числа определите последнюю цифру (остаток от деления на 10).
Шаг 5: Добавьте текущее число в соответствующий список во вспомогательном массиве, основываясь на его последней цифре.
Шаг 6: Пройдитесь по вспомогательному массиву и объедините все списки в один отсортированный массив.
Шаг 7: Выведите отсортированный массив на экран.

Программа на языке Паскаль может выглядеть следующим образом:

program sort_by_last_digit;

const
n = 10;
min = 10;
max = 100;

type
digitList = ^list;
list = record
value: integer;
next: digitList;
end;

var
arrayToSort: array[1..n] of integer;
helperArray: array[0..9] of digitList;
sortedArray: array[1..n] of integer;
i: integer;
current: digitList;
currentIndex: integer;

function generateRandomNumber(): integer;
begin
randomize;
generateRandomNumber := random(max - min + 1) + min;
end;

procedure addToEnd(var head: digitList; number: integer);
var
newNode, cur: digitList;
begin
newNode := new(digitList);
newNode^.value := number;
newNode^.next := nil;

if head = nil then
head := newNode
else
begin
cur := head;
while cur^.next <> nil do
cur := cur^.next;

cur^.next := newNode;
end;
end;

procedure mergeLists();
var
i: integer;
cur: digitList;
begin
currentIndex := 1;

for i := 0 to 9 do
begin
cur := helperArray[i];
while cur <> nil do
begin
sortedArray[currentIndex] := cur^.value;
currentIndex := currentIndex + 1;
cur := cur^.next;
end;
end;
end;

begin
// Заполнение массива случайными числами
for i := 1 to n do
arrayToSort[i] := generateRandomNumber();

// Инициализация вспомогательного массива
for i := 0 to 9 do
helperArray[i] := nil;

// Сортировка по последней цифре исходного массива
for i := 1 to n do
addToEnd(helperArray[arrayToSort[i] mod 10], arrayToSort[i]);

// Объединение отсортированных списков
mergeLists();

// Вывод отсортированного массива
for i := 1 to n do
writeln(sortedArray[i]);
end.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?