lelik-852 | Дата: Четверг, 31.07.2014, 09:52 | Сообщение # 1 |
Рядовой
Группа: Пользователи
Сообщений: 1
Статус: Offline
| Найти суммы компонент вещественнойматрицы m[n,k] по строкам и записатьих в одномерный массив v[n]. Заменить значения компонент в строкахматрицы m[n,k] на 1, если суммасоответствующей строки окажется больше 0, на −1, если сумма меньше 0, на 0, если сумма равна 0. Найти минимальное значение компонентмассива v[n]. Если минимумовв массиве несколько, то запомнить индекс первого встреченного при переборе из минимумов. На экран вывести исходную матрицу m[n,k], массив v[n],изменённую матрицу m[n,k], первуювстреченную минимальную компоненту с индексом.
Код const min=2; max=10; Type matrix = Array [1..max, 1..max] Of real; Type vector = Array [1..max] Of real; Procedure input_matrix (Var m: matrix; Var n, k: integer); Var a, b, p1, p2, i, j: Integer; Begin repeat Write ('Введите количество строк от ',min,' до ',max,' n = '); ReadLN (n); until n in [min..max]; repeat Write ('Введите количество столбцов от ',min,' до ',max,' k = '); ReadLN (k); until k in [min..max]; repeat Writeln('Введите границы диапазона значений компонент матрицы a<b'); ReadLN (a,b); until a<b; Randomize; For i:=1 To n Do begin For j:=1 To k Do begin m[i,j]:=a+(b-a)*random; end; End; end; Procedure show_array (v: vector; n: integer); var i:integer; begin for i:=1 to n do write(v[i]:5:1); writeln; end; Procedure show_matrix (Var m: matrix; n, k: integer); var i,j:integer; begin for i:=1 to n do begin for j:=1 to k do begin write(m[i,j]:5:1); end; writeLn; end; end; Procedure work1 (Var m: matrix; n, k: integer;var v: vector); var i,j:integer; begin for i:=1 to n do begin v[i]:=0; for j:=1 to k do begin v[i]:=v[i]+m[i,j]; end; end; end; Procedure work2 (Var m: matrix; n, k: integer;v:vector); var i,j:integer; begin for i:=1 to n do begin for j:=1 to k do begin if v[i]>0 then m[i,j]:=1 else if v[i]<0 then m[i,j]:=-1 else m[i,j]:=0; end; end; end; Procedure work3 (v: vector; n: integer); var i,imn:integer; begin imn:=1; for i:=1 to n do begin if v[i]<v[imn]-0.0001 then imn:=i;{//-0.0001 для сравнения вещественых чисел} end; writeln('Минимальный элемент массива V=',v[imn]:0:1,' индекс первого=',imn); end; var a:matrix; n,k: integer; v:vector; begin input_matrix(a,n,k); writeln('Исходная матрица'); show_matrix(a,n,k); work1(a,n,k,v); writeln('Массив сумм в строках'); show_array(v,n); work2(a,n,k,v); writeln('Измененная матрица'); show_matrix(a,n,k); work3(v,n); end.
|
|
| |
diamFC | Дата: Четверг, 31.07.2014, 10:26 | Сообщение # 2 |
Полковник
Группа: Администраторы
Сообщений: 207
Статус: Offline
| В архиве блок-схема
|
|
| |