Упорядочьте строки по неубыванию сумм цифр элементов этой строки - Turbo Pascal
Формулировка задачи:
1)Пусть дана матрица A(n x m). Упорядочьте строки по неубыванию сумм цифр элементов этой строки. Воспользуйтесь функцией, определяющей для каждого числа сумму его цифр.
Решение задачи: «Упорядочьте строки по неубыванию сумм цифр элементов этой строки»
textual
Листинг программы
- uses crt;
- function s_cifr(a:integer):integer;
- var b,s:integer;
- begin
- b:=abs(a);
- s:=0;
- while b>0 do
- begin
- s:=s+b mod 10;
- b:=b div 10;
- end;
- s_cifr:=s;
- end;
- const nmax=10;
- var a:array[1..nmax,1..nmax+1] of integer;
- n,m,i,j,k,p,max,x:integer;
- begin
- clrscr;
- randomize;
- repeat
- write('Количество строк от 2 до ',nmax,' n=');
- readln(n);
- until n in [2..nmax];
- repeat
- write('Количество столбцов от 2 до ',nmax,' m=');
- readln(m);
- until m in [2..nmax];
- for i:=1 to n do
- for j:=1 to m do
- a[i,j]:=-300+random(1000);
- {считаем суммы цифр в строках}
- for i:=1 to n do
- begin
- a[i,m+1]:=0;{сумму цифр записываем в дополнительный стобец}
- for j:=1 to m do
- a[i,m+1]:=a[i,m+1]+s_cifr(a[i,j]);
- end;
- writeln('Исходная матрица:');
- writeln('Сумма цифр':m*5+12);
- for i:=1 to n do
- begin
- for j:=1 to m do
- write(a[i,j]:5);{элементы строки}
- writeln(a[i,m+1]:7);
- end;
- {перестановка строк по неубыванию значений в последнем столбце}
- for i:=1 to n-1 do
- for k:=i+1 to n do
- if a[i,m+1]>a[k,m+1] then
- for j:=1 to m+1 do
- begin
- x:=a[i,j];
- a[i,j]:=a[k,j];
- a[k,j]:=x;
- end;
- writeln('Строки упорядочены по неубыванию сумм цифр:');
- writeln('Сумма цифр':m*5+12);
- for i:=1 to n do
- begin
- for j:=1 to m do
- write(a[i,j]:5);
- writeln(a[i,m+1]:7);
- end;
- readln
- end.
Объяснение кода листинга программы
- Создается функция
s_cifr
, которая принимает целое числоa
и возвращает сумму его цифр. Функция использует циклwhile
, чтобы последовательно делить число на 10 и добавлять остаток от деления к сумме цифр. - Создается переменная
a
, которая представляет собой матрицу целых чисел размеромnmax x (nmax+1)
. Каждый элемент матрицы устанавливается на-300
плюс случайное число в диапазоне от 0 до 999. Это создает случайную матрицу. - Заполняются строки матрицы
a
. Для каждой строкиi
и каждого столбцаj
устанавливается значениеa[i,j]
равным сумме цифр элементов строкиi
. Сумма цифр записывается в дополнительный столбецa[i,m+1]
. - Выводится исходная матрица
a
и сумма цифр, которая равна произведению количества строк на 5 и 12 (это нужно для вычисления суммы цифр в строках). - Переставляются строки матрицы
a
по неубыванию значений в последнем столбце. Для этого используется алгоритм перестановки, который переставляет строкиi
иk
местами, если значениеa[i,m+1]
больше значенияa[k,m+1]
. - Выводится матрица
a
после перестановки строк. - Выводится последняя строка матрицы
a
и сумма цифр, которая равна произведению количества строк на 5 и 12.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д