Упорядочьте строки по неубыванию сумм цифр элементов этой строки - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д