Упорядочьте строки по неубыванию сумм цифр элементов этой строки - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

1)Пусть дана матрица A(n x m). Упорядочьте строки по неубыванию сумм цифр элементов этой строки. Воспользуйтесь функцией, определяющей для каждого числа сумму его цифр.

Решение задачи: «Упорядочьте строки по неубыванию сумм цифр элементов этой строки»

textual
Листинг программы
  1. uses crt;
  2. function s_cifr(a:integer):integer;
  3. var b,s:integer;
  4. begin
  5. b:=abs(a);
  6. s:=0;
  7. while b>0 do
  8.  begin
  9.   s:=s+b mod 10;
  10.   b:=b div 10;
  11.  end;
  12. s_cifr:=s;
  13. end;
  14. const nmax=10;
  15. var a:array[1..nmax,1..nmax+1] of integer;
  16.     n,m,i,j,k,p,max,x:integer;
  17. begin
  18. clrscr;
  19. randomize;
  20. repeat
  21. write('Количество строк от 2 до ',nmax,' n=');
  22. readln(n);
  23. until n in [2..nmax];
  24. repeat
  25. write('Количество столбцов от 2 до ',nmax,' m=');
  26. readln(m);
  27. until m in [2..nmax];
  28. for i:=1 to n do
  29. for j:=1 to m do
  30. a[i,j]:=-300+random(1000);
  31. {считаем суммы цифр в строках}
  32. for i:=1 to n do
  33.  begin
  34.   a[i,m+1]:=0;{сумму цифр записываем в дополнительный стобец}
  35.   for j:=1 to m do
  36.   a[i,m+1]:=a[i,m+1]+s_cifr(a[i,j]);
  37.  end;
  38. writeln('Исходная матрица:');
  39. writeln('Сумма цифр':m*5+12);
  40. for i:=1 to n do
  41.  begin
  42.   for j:=1 to m do
  43.   write(a[i,j]:5);{элементы строки}
  44.   writeln(a[i,m+1]:7);
  45.  end;
  46. {перестановка строк по неубыванию значений в последнем столбце}
  47. for i:=1 to n-1 do
  48. for k:=i+1 to n do
  49. if a[i,m+1]>a[k,m+1] then
  50. for j:=1 to m+1 do
  51.  begin
  52.   x:=a[i,j];
  53.   a[i,j]:=a[k,j];
  54.   a[k,j]:=x;
  55.  end;
  56. writeln('Строки упорядочены по неубыванию сумм цифр:');
  57. writeln('Сумма цифр':m*5+12);
  58. for i:=1 to n do
  59.  begin
  60.   for j:=1 to m do
  61.   write(a[i,j]:5);
  62.   writeln(a[i,m+1]:7);
  63.  end;
  64. readln
  65. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы