Поменять местами в матрице m[n,n] компоненты строки, содержащей максимум, с компонентами столбца, содержащего минимум. Если максимумов и (или) минимумов в матрице несколько, то взять строку и столбец последних встреченных при переборе из максимумов и минимумов соответственно.
Это одна из подзадач в большой задаче. Остальные подзадачи вроде сделал. Могу выложить задание полностью и исходник, который запускается в Turbo Pascal 7.0
Sozialist
5.10.2008 19:09
Осуществи поиск по строкам и столбцам. Найдешь элементы - сохрани содержимое соотв. строки или соотв. столбца. Все. Теперь можно заменять.
Unlegal
6.10.2008 15:10
Вот полное задание. 2-е подзадание вызывает трудности. Изучаю паскаль недели три. В голове каша. Помогите, скоро сессия. Надо сдать контрольную. Доработайте, пожалуйста, до конца программу, сам не могу.
Добавлено через 2 мин. Методом рабоче-крестьянской логики сделал (там в методичке есть пример) и от себя кое-что добавил. Вот что получилось. Там где вопросы -должно быть 2-е подзадание:
Program zad_3; Type matrix = Array [1..10, 1..10] Of Integer; Var m: matrix; n, k, l: Integer; Procedure input_matrix (Var m: matrix; Var n: Integer); Var a, b, p1, p2, i, j: Integer; Begin Write ('Введите размер квадратной матрицы n'); WriteLN (' не менее 2 и не более 10'); ReadLN (n); If (n<2) Or (n>10) Then Begin Write ('Вы ввели размер матрицы меньше 2 или'); Write (' больше 10, поэтому будет принят'); WriteLN (' максимальный размер n=10'); n:=10 End; Write ('Введите левую a и правую b границы диапазона'); WriteLN (' значений компонент матрицы'); Write ('a='); ReadLN (a); Write ('b='); ReadLN (b); If a>b Then Begin p1:=a; a:=b; b:=p1; End; If a=b Then Begin p1:=0; p2:=b; End Else If b=0 Then Begin p1:=a; p2:=0; End Else Begin p1:=b-a; p2:=a; End; Randomize; For i:=1 To n Do For j:=1 To n Do m[i,j]:=random(p1+1)+p2; End; Procedure output_matrix (Var m: matrix; n: Integer); Var i, j: Integer; Begin For i:=1 To n Do Begin For j:=1 To n Do Write (m[i,j]: 4, ' '); WriteLN; End; End; Procedure search_min (Var m: matrix; n: Integer); Var min, row_min, column_min, i, j: Integer; Begin min:=m[1,1]; row_min:=1; column_min:=1; For i:=1 To n Do For j:=1 To n Do If min>=m[i,j] Then Begin min:=m[i,j]; row_min:=i; column_min:=j; End; Write ('Минимальное значение ', min); Write (' в строке ', row_min); WriteLN (' в столбце ', column_min); End; Procedure search_max (Var m: matrix; n: Integer); Var max, row_max, column_max, i, j: Integer; Begin max:=m[n,n]; row_max:=n; column_max:=n; For i:=1 To n Do For j:=1 To n Do If max<=m[i,j] Then Begin max:=m[i,j]; row_max:=i; column_max:=j; End; Write ('Максимальное значение ', max); Write (' в строке ', row_max); WriteLN (' в столбце ', column_max); End;
Procedure secondary_diagonal (Var m: matrix; n: Integer); Var i: Integer; v: Array [1..10] Of Integer; Begin WriteLN ('Массив:'); For i:=1 To n Do Begin v[i]:=m[i,n+1-i]; Write (v[i], ' '); End; WriteLN; End; Procedure sum_secondary_diagonal (Var m: matrix; n: Integer); Var i, sum: Integer; v: Array [1..10] Of Integer; Begin WriteLN ('Сумма компонент массива:'); sum:=0; For i:=1 To n Do Begin sum:=sum+m[i,n+1-i]; End; WriteLN (sum); End; Begin input_matrix (m, n); output_matrix (m, n); search_min (m, n); search_max (m, n); alteration_matrix (???????); output_matrix (m, n); secondary_diagonal (m, n); sum_secondary_diagonal (m, n); ReadLN; End.
.
мисс_граффити
6.10.2008 23:09
Перенести в задачи на заказ?
Lapp
7.10.2008 3:25
Цитата(мисс_граффити @ 6.10.2008 19:09)
Перенести в задачи на заказ?
Зачем же так? Человек просит помощи. Что-то пытается сделать сам..
Цитата(Unlegal @ 6.10.2008 11:10)
Вот полное задание. 2-е подзадание вызывает трудности.
Честно пытался прочитать прикрепленный doc. Мой WordPad его не взял. Word'а у меня на ноуте нет - дороговато.. Может, все-таки потрудишься набрать пару строк пальчиками?..
Unlegal
8.10.2008 10:15
Пальчиками не получится, а если и получится будет очень коряво. Там в Word'е используетя редактор формул Microsoft Equation. Но выход всегда есть. Прилагаю скриншот.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.