Advertisement
Domerk

Лаба_матрицы (для Коли)

Dec 22nd, 2012
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 7.14 KB | None | 0 0
  1. {В заданной матрице поменять местами последний столбец и столбец, содержащий наименьший элемент матрицы}
  2.  
  3. const {раздел объявления констант - он будет именно здесь}
  4.         Izm=100;
  5. Type {раздел объявления типов - тоже будет тут и нигде иначе}
  6.         Tind=1..Izm; {создаём тип «индекс», принимающий значение от 1 до 100}
  7.         Telem=integer;   {создаём тип «элемент»}
  8.         TMas=array[TInd, Tind] of Telem; {создаём тип «массив» с индексом типа «индекс» и элементами типа «элемент»}
  9.        
  10. {=========================================}
  11. Function Arrays (n, m: Tind; Mat: Tmas): TMas; {функция заполнения матрицы}
  12. {входные данные: количество строк и столбцов матрицы, матрица}
  13. {выходные данные: матрица}
  14. var
  15.         i1, j1 : Tind; {переменные типа «индекс»}
  16. begin        
  17.         for i1:=1 to n do begin {пока не дошли до конца матрицы}
  18.             writeln ('Введите указанное количество чисел: ', m);  {выводим количество чисел в строке}
  19.             for j1:=1 to m do begin {пока не кончились столбцы}
  20.                 read (Mat[i1,j1]); {считываем значение}
  21.             end;
  22.         end;
  23.         Arrays:=Mat; {возвращаем полученную матрицу}
  24. end;
  25. {=========================================}
  26. procedure Visual (n, m: Tind; Mat: Tmas); {процедура визуализации, выводящая массив на экран}
  27. {входные данные: количество строк и столбцов матрицы, матрица}
  28. var
  29.         i1, j1 : Tind;
  30. begin
  31.         for i1:=1 to n do begin {переход по строкам}
  32.             for j1:=1 to m do begin {переход по столбцам}
  33.                 write ('  ',Mat[i1,j1]:7,'  '); {выводим текущий элемент на экран}
  34.             end;
  35.             writeln; {доходя до конца строки, переходим на следующую строку}
  36.         end;
  37. end;
  38. {=========================================}
  39. function Minimal (n, m: Tind; Mat: Tmas): Tind; {функция, находящая минимальный элемент матрицы}
  40. {входные данные: количество строк и столбцов матрицы, матрица}
  41. {выходные данные: номер столбца, содержащего минимальный элемент}
  42. var
  43.         i1, j1, jmin: Tind; {объявляем переменные типа «индекс»}
  44.         min: Telem; {переменные типа «элемент»}
  45. begin
  46.         min:=Mat[1,1]; {принимаем за минимальное значение значение, содержащееся в первой ячейке матрицы}
  47.  
  48.         for i1:=1 to n do begin {перемещение по строкам}
  49.             for j1:=1 to m do begin  {перемещение по столбцам}
  50.                 if Mat[i1,j1]<=min then begin  {если значение в ячейке меньше или равно минимуму}
  51.                        min:=Mat[i1,j1];  {то присваиваем ему данное значение}
  52.                        jmin:=j1;  {и запоминаем номер столбца}
  53.                 end;
  54.             end;
  55.         end;  
  56.         writeln; {переходим на строку вниз}
  57.         writeln ('  Min = ',min); {выводим минимальное значение}
  58.         Minimal:=jmin; {Возвращаем номер столбца, содержащего минимальный элемент}
  59. end;
  60. {=========================================}
  61. function Shanger (n, m: Tind; Mat: Tmas; jmin: Tind): Tmas;  {функция, меняющая местами последнюю строку со строкой, содержащей наименьший элемент}
  62. {входные данные: количество строк и столбцов матрицы, матрица, номер строки, содержащей минимальный элемент}
  63. {выходные данные: матрица}
  64. var
  65.         i1, j1 : Tind;
  66.         a1: Telem; {переменные типа «элемент»}
  67. begin        
  68.       if jmin<>m then begin {если столбец не является последнем}
  69.             for i1:=1 to n do begin {то для каждой ячейки из этого столбца}
  70.                 a1:=Mat[i1, jmin]; {заносим значение из ячейки в переменную}
  71.                 Mat[i1, jmin]:=Mat[i1, m]; {записываем в ячейку значение из той же строки последнего слобца}
  72.                 Mat[i1, m]:=a1; {куда заносим значение из переменной, то есть меняем значения из столбца с минимумом и конечного местами}
  73.             end;
  74.         end;
  75.         writeln;
  76.         Shanger:=Mat;
  77. end;
  78. {===========================================================================}
  79. {Ниже - раздел объявления глобальных переменных и тело главной процедуры}
  80. {===========================================================================}
  81. var
  82.         n, m, jmin: Tind; {объявляем переменные типа «индекс»}
  83.         Mat: Tmas; {матрица типа «массив»}
  84. {=========================================}
  85. begin
  86.         Writeln ('Введите количество строк — целое положительное число: '); {Подсказка для пользователя — просим его ввести количество строк}
  87.         Readln (n); {считываем}
  88.         Writeln ('Введите количество столбцов — целое положительное число: '); {Просим ввести количество столбцов}
  89.         Readln (m); {считываем}
  90.         Mat:=Arrays(n, m, Mat); {присваиваем матрице результат работы функции}
  91.         writeln;  {опускаемся на строку вниз}
  92.         Visual(n, m, Mat); {вызываем функцию, выводящую массив на экран}
  93.         jmin:=Minimal(n, m, Mat); {находим номер столбца, содержащего минимальный элемент}
  94.         writeln; {переходим на строку вниз — делаем пустую строку для красоты}
  95.         Mat:=Shanger (n, m, Mat, jmin);
  96.         Visual(n, m, Mat);  {вызываем функцию, выводящую массив на экран}
  97. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement