Действия с матрицей - Turbo Pascal

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

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

Выполнить над прямоугольной матрицей В размером m х n последовательность действий, указанную в задании. а) Сформировать из столбцов В, не содержащих равных элементов, матрицу С размером m х k, где k  n - количество таких столбцов; б) в матрице С вычислить суммы элементов строк, номера которых определяются номерами нулевых элементов заданного вектора.

Решение задачи: «Действия с матрицей»

textual
Листинг программы
  1. uses crt;
  2. const nmax=10;
  3. var b,c:array[1..nmax,1..nmax] of integer;
  4.     v:array[1..nmax] of byte;
  5.     m,n,k,i,j,f,p:byte;
  6.     sm:integer;
  7. begin
  8. clrscr;
  9. randomize;
  10. repeat
  11. write('Количество строк до ',nmax,' m=');
  12. readln(m);
  13. until m in [1..nmax];
  14. repeat
  15. write('Количество столбцов до ',nmax,' n=');
  16. readln(n);
  17. until n in [1..nmax];
  18. writeln('Исходная матрица B:');
  19. for i:=1 to m do
  20.  begin
  21.   for j:=1 to n do
  22.    begin
  23.     b[i,j]:=random(20);
  24.     write(b[i,j]:3);
  25.    end;
  26.   writeln;
  27.  end;
  28. k:=0;
  29. for j:=1 to n do
  30.  begin
  31.   f:=0;
  32.   i:=1;
  33.   while(i<m)and(f=0) do
  34.    begin
  35.     p:=i+1;
  36.     while(p<=m)and(f=0) do
  37.     if b[p,j]=b[i,j] then f:=1
  38.     else inc(p);
  39.     if f=0 then inc(i);
  40.    end;
  41.   if f=0 then
  42.    begin
  43.     inc(k);
  44.     for i:=1 to m do
  45.     c[i,k]:=b[i,j];
  46.    end;
  47.  end;
  48. if k=0 then
  49.  begin
  50.   writeln('Во всех столбцах матрицы В есть одинаковые элементы');
  51.   readln;
  52.   exit;
  53.  end;
  54. writeln('Матрица С');
  55. for i:=1 to m do
  56.  begin
  57.   for j:=1 to k do
  58.   write(c[i,j]:3);
  59.   writeln;
  60.  end;
  61. writeln('Вектор V');
  62. for i:=1 to m do
  63.  begin
  64.   v[i]:=random(2);
  65.   write(v[i]:3);
  66.  end;
  67. writeln;
  68. p:=0;
  69. for i:=1 to m do
  70. if v[i]=0 then
  71.  begin
  72.   p:=1;
  73.   sm:=0;
  74.   for j:=1 to n do
  75.   sm:=sm+c[i,j];
  76.   writeln('Сумма в строке ',i,'=',sm);
  77.  end;
  78. if p=0 then write('В векторе нет нулевых элементов');
  79. readln
  80. end.

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

  1. Используется библиотека crt для работы с графическим интерфейсом.
  2. Задаются константы nmax и m, которые представляют максимально возможное количество строк и столбцов матрицы соответственно.
  3. Объявляются переменные b, c, v, m, n, k, i, j, f и p. Переменная b представляет исходную матрицу, c - копию матрицы b, v - вектор, m, n, k, i, j, f и p - вспомогательные переменные для поиска повторяющихся элементов в матрице b.
  4. Выводится запрос на ввод количества строк и столбцов матрицы.
  5. Для каждой строки матрицы b выводится количество повторяющихся элементов в столбце.
  6. Если количество повторяющихся элементов равно нулю, выводится сообщение о том, что во всех столбцах матрицы b есть одинаковые элементы.
  7. Выводится матрица c, которая представляет копию матрицы b с повторяющимися элементами.
  8. Выводится вектор v.
  9. Выводится сообщение о том, что в векторе нет нулевых элементов.
  10. Выводится сумма элементов в строке для каждого повторяющегося элемента в матрице b.
  11. Если сумма элементов в строке равна нулю, выводится сообщение о том, что в строке нет повторяющихся элементов.

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


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

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

5   голосов , оценка 3.8 из 5

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

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

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