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

Объяснение кода листинга программы

  1. Создается функция s_cifr, которая принимает целое число a и возвращает сумму его цифр. Функция использует цикл while, чтобы последовательно делить число на 10 и добавлять остаток от деления к сумме цифр.
  2. Создается переменная a, которая представляет собой матрицу целых чисел размером nmax x (nmax+1). Каждый элемент матрицы устанавливается на -300 плюс случайное число в диапазоне от 0 до 999. Это создает случайную матрицу.
  3. Заполняются строки матрицы a. Для каждой строки i и каждого столбца j устанавливается значение a[i,j] равным сумме цифр элементов строки i. Сумма цифр записывается в дополнительный столбец a[i,m+1].
  4. Выводится исходная матрица a и сумма цифр, которая равна произведению количества строк на 5 и 12 (это нужно для вычисления суммы цифр в строках).
  5. Переставляются строки матрицы a по неубыванию значений в последнем столбце. Для этого используется алгоритм перестановки, который переставляет строки i и k местами, если значение a[i,m+1] больше значения a[k,m+1].
  6. Выводится матрица a после перестановки строк.
  7. Выводится последняя строка матрицы a и сумма цифр, которая равна произведению количества строк на 5 и 12.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.571 из 5
Похожие ответы