М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
aspier2016
aspier2016
10.08.2021 15:05 •  Информатика

Уровень 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 паскаль(старая версия)

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

Шаг 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.
4,5(58 оценок)
Проверить ответ в нейросети
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ