Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум ЭВМ ответы.doc
Скачиваний:
3
Добавлен:
07.05.2019
Размер:
309.25 Кб
Скачать

Включение столбца в матрицу.

Алгоритм включения столбца в матрицу является сходным с алгоритмом включения элементов одномерного массива, за тем исключением, что операция переноса элементов выполняется для каждой строки при переборе столбцов. Рассмотрим пример, где необходимо в квадратной матрице А вставить столбец, содержащий ее элементы главной диагонали - следующим за столбцом, содержащим минимальный элемент матрицы. Для этого перепишем диагональные элементы в массив B, найдем минимальный элемент и его индекс по столбцу. Перебирая столбцы, сдвинем все столбцы на позицию вправо начиная от найденного индекса столбца минимального элемента. Занесем в следующий столбец за индексом минимального элемента - элементы столбца, которые хранятся в массиве B.

Программа:

  1. # include

  2. # include

  3. # include

  4. # define n 7

  5. int main ()

  6. {

  7. clrscr ();

  8. int a[n][n+1],b[n],min,j_min;

  9. clrscr ();

  10. randomize();

  11. printf ("\n Сформирована квадратная матрица A[%i][%i] .",n,n);

  12. for (int i=0;i

  13. {

  14.   for (int j=0;j

  15. {

  16. a[i][j]=random(31)-15;

  17. printf ("%6i",a[i][j]);

  18. }

  19. puts (" ");

  20. }

  21. for (int i=0;i

  22. b[i]=a[i][i];

  23. min=a[0][0]; j_min=0;

  24. for (int i=0;i

  25. for (int j=0;j

  26. if(a[i][j]

  27. {

  28. min=a[i][j];

  29. j_min=j;

  30. }

  31. int  m=n;

  32. m++;

  33. for (int j=m-1;j>j_min;j--)

  34. for (int i=0;i

  35. a[i][j]=a[i][j-1];

  36. for(int i=0;i

  37. a[i][j_min+1]=b[i];

  38. printf ("\n Получен массив A[%i][%i]\n",n,m);

  39. for (int i=0;i

  40. {

  41. for (j=0;j

  42. printf ("%6i",a[i][j]);

  43. puts (" ");

  44. }

  45. getch();

  46. }

Преобразование матрицы.

Предыдущий пример может служить так же и примером преобразования матрицы, однако довольно часто встречаются задачи на преобразования матриц за счет изменения значений их элементов. Рассмотрим пример на умножение заданной с клавиатуры строки матрицы на элемент, являющийся "седловой" точкой, т.е. например, минимальным элементом из максимальных элементов по строкам. Для решения такой задачи следует определить значение "седлвой" точки. Это можно сделать, организовав поиск максимального элемента по каждой строке и занесение его в элемент соответствующий индексу этой строки одномерного массива. Далее найти минимальный элемент в получившемся массиве, который и будет являться "седловой" точкой. После алгоритм становится достаточно не сложным. Необходимо ввести с клавиатуры индекс строки для преобразования и в цикле по столбцам преобразовать все элементы заданной строки, умножив их значение на полученный элемент "седловой" точки.

Программа :

  1. # include

  2. # include

  3. # include

  4. # define n 10

  5. # define m 5

  6. int main ()

  7. {

  8. int a[n][m],b[n],max,sedlt;

  9. clrscr ();

  10. randomize();

  11. printf ("\n Целочисленная матрица A[%i][%i] сформированные случайными числами \n диапазона от -150 до 150.\n",n,m);

  12. for (int i=0;i

  13. {

  14. for (int j=0;i

  15. {

  16. a[i]=random(301)-150;

  17. printf ("%6i",a[i]);

  18. }

  19. puts(" ");

  20. }

  21. int t;

  22. printf ("\n Введите номер строки матрицы для ее умножения ее на значение 'седловой' точки : ");

  23. scanf ("%i",&t);

  24. for (int i=0;i

  25. {

  26. max=a[i][0];

  27. for(int j=1;j

  28.   if (a[i][j]>max)

  29. max=a[i][j];

  30. b[i]=max;

  31. }

  32. sedlt=b[0];

  33. for (int i=1;i

  34. if (b[i]

  35. sedlt=b[i];

  36. for (int j=0;j

  37. a[t][j]*=sedlt;

  38. printf ("\n Получена матрица A[%i][%i]. \n",n,m);

  39. for (int i=0;i

  40. {

  41.   for (int j=0;j

  42. printf ("%6i",a[i][j]);

  43. puts (" ");

  44. }

  45. getch();

  46. }