
Вопрос задан 30.07.2023 в 01:51.
Предмет Информатика.
Спрашивает Гелина Ангелина.
Отсортировать массив по возрастанию последней цифры по строкам. Паскаль


Ответы на вопрос

Отвечает Сергей Смотрин.
PascalABC.NET 3.3.5, сборка 1662 от 29.04.2018
Внимание! Если программа не работает, обновите версию!
begin
var (m,n):=ReadInteger2('Количество строк и столбцов в массиве:');
Writeln('*** Исходный массив ***');
var a:=MatrRandom(m,n,-99,99);
a.Println(4); Writeln(4*n*'-');
for var i:=0 to m-1 do
a.SetRow(i,a.Row(i).OrderBy(t->Abs(t mod 10)).ToArray);
Writeln('*** Полученный массив ***'); a.Println(4)
end.
Пример
Количество строк и столбцов в массиве: 5 8
*** Исходный массив ***
-53 -41 -74 23 90 -4 48 -78
-68 82 45 82 -54 -53 -63 80
66 40 -72 -15 79 -95 16 98
-52 -76 37 10 -9 -87 -12 30
-82 -58 43 -17 58 27 -85 96
--------------------------------
*** Полученный массив ***
90 -41 -53 23 -74 -4 48 -78
80 82 82 -53 -63 -54 45 -68
40 -72 -15 -95 66 16 98 79
10 30 -52 -12 -76 37 -87 -9
-82 43 -85 96 -17 27 -58 58
Замечание. В связи с некорректно поставленным вопросом принято решение сортировать каждую строку массива независимо от прочих по возрастанию последней цифры.
Внимание! Если программа не работает, обновите версию!
begin
var (m,n):=ReadInteger2('Количество строк и столбцов в массиве:');
Writeln('*** Исходный массив ***');
var a:=MatrRandom(m,n,-99,99);
a.Println(4); Writeln(4*n*'-');
for var i:=0 to m-1 do
a.SetRow(i,a.Row(i).OrderBy(t->Abs(t mod 10)).ToArray);
Writeln('*** Полученный массив ***'); a.Println(4)
end.
Пример
Количество строк и столбцов в массиве: 5 8
*** Исходный массив ***
-53 -41 -74 23 90 -4 48 -78
-68 82 45 82 -54 -53 -63 80
66 40 -72 -15 79 -95 16 98
-52 -76 37 10 -9 -87 -12 30
-82 -58 43 -17 58 27 -85 96
--------------------------------
*** Полученный массив ***
90 -41 -53 23 -74 -4 48 -78
80 82 82 -53 -63 -54 45 -68
40 -72 -15 -95 66 16 98 79
10 30 -52 -12 -76 37 -87 -9
-82 43 -85 96 -17 27 -58 58
Замечание. В связи с некорректно поставленным вопросом принято решение сортировать каждую строку массива независимо от прочих по возрастанию последней цифры.



Отвечает Марцевич Кристина.
Const n=5;
var a:array[1..n,1..n] of integer;
i,j,v,l:integer;
begin
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=random(30);
write(a[i,j]:4)
end;
writeln
end;
writeln;
for l:=n-1 downto 1 do
for i:=1 to l do
if a[i,n] > a[i+1,n] then
for j:=1 to n do
begin
v:=a[i,j];
a[i,j]:=a[i+1,j];
a[i+1,j]:=v
end;
for i:=1 to n do
begin
for j:=1 to n do write(a[i,j]:4);
writeln
end;
readln
end.
var a:array[1..n,1..n] of integer;
i,j,v,l:integer;
begin
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=random(30);
write(a[i,j]:4)
end;
writeln
end;
writeln;
for l:=n-1 downto 1 do
for i:=1 to l do
if a[i,n] > a[i+1,n] then
for j:=1 to n do
begin
v:=a[i,j];
a[i,j]:=a[i+1,j];
a[i+1,j]:=v
end;
for i:=1 to n do
begin
for j:=1 to n do write(a[i,j]:4);
writeln
end;
readln
end.



Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Для сортировки массива по возрастанию последней цифры по строкам в Pascal (Delphi) вы можете использовать простой алгоритм сортировки, такой как сортировка пузырьком. Вот пример кода:
pascalprogram SortArrayByLastDigit; const Rows = 5; // Количество строк в массиве Cols = 5; // Количество столбцов в массиве type TwoDimensionalArray = array[1..Rows, 1..Cols] of Integer; var arr: TwoDimensionalArray; i, j, temp, lastDigitI, lastDigitJ: Integer; // Функция для получения последней цифры числа function GetLastDigit(num: Integer): Integer; begin Result := Abs(num) mod 10; end; // Процедура сортировки массива по возрастанию последней цифры по строкам procedure SortArrayByLastDigit(); begin for i := 1 to Rows do begin for j := 1 to Cols - 1 do begin lastDigitI := GetLastDigit(arr[i, j]); lastDigitJ := GetLastDigit(arr[i, j + 1]); if lastDigitI > lastDigitJ then begin // Меняем местами элементы массива, если последняя цифра первого элемента больше последней цифры второго элемента temp := arr[i, j]; arr[i, j] := arr[i, j + 1]; arr[i, j + 1] := temp; end; end; end; end; // Процедура для вывода массива на экран procedure PrintArray(); begin for i := 1 to Rows do begin for j := 1 to Cols do Write(arr[i, j]:4); Writeln; end; end; begin // Ввод значений массива (здесь ввод может быть произведен с клавиатуры или задан заранее) arr[1, 1] := 23; arr[1, 2] := 45; arr[1, 3] := 17; arr[1, 4] := 98; arr[1, 5] := 32; arr[2, 1] := 11; arr[2, 2] := 87; arr[2, 3] := 64; arr[2, 4] := 59; arr[2, 5] := 21; arr[3, 1] := 99; arr[3, 2] := 29; arr[3, 3] := 74; arr[3, 4] := 51; arr[3, 5] := 64; arr[4, 1] := 37; arr[4, 2] := 85; arr[4, 3] := 77; arr[4, 4] := 12; arr[4, 5] := 33; arr[5, 1] := 62; arr[5, 2] := 44; arr[5, 3] := 57; arr[5, 4] := 39; arr[5, 5] := 22; Writeln('Исходный массив:'); PrintArray(); // Сортируем массив по последней цифре по строкам SortArrayByLastDigit(); Writeln('Отсортированный массив по последней цифре по строкам:'); PrintArray(); Readln; end.
В этом примере я использовал массив 5x5, но вы можете изменить значение констант Rows
и Cols
в соответствии с вашими требованиями. Здесь массив уже содержит некоторые значения, но вы можете изменить их или ввести значения с клавиатуры.


Похожие вопросы
Топ вопросов за вчера в категории Информатика

Информатика 2132

Информатика 63

Информатика 14

Информатика 32

Информатика 19

Информатика 15

Информатика 175

Информатика 31

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