Помощь - Поиск - Пользователи - Календарь
Полная версия: Программа на Turbo Pascal 7.0
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Unlegal
Помогите написать такую программу:

Поменять местами в матрице m[n,n] компоненты строки, содержащей максимум,
с компонентами столбца, содержащего минимум. Если максимумов и (или)
минимумов в матрице несколько, то взять строку и столбец последних
встреченных при переборе из максимумов и минимумов соответственно.

Это одна из подзадач в большой задаче. Остальные подзадачи вроде
сделал. Могу выложить задание полностью и исходник, который
запускается в Turbo Pascal 7.0
Sozialist
Осуществи поиск по строкам и столбцам. Найдешь элементы - сохрани содержимое соотв. строки или соотв. столбца. Все. Теперь можно заменять.
Unlegal
Вот полное задание. 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 alteration_matrix
???????????????????????????


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.

.
мисс_граффити
Перенести в задачи на заказ?
Lapp
Цитата(мисс_граффити @ 6.10.2008 19:09) *
Перенести в задачи на заказ?
Зачем же так? Человек просит помощи. Что-то пытается сделать сам..

Цитата(Unlegal @ 6.10.2008 11:10) *
Вот полное задание. 2-е подзадание вызывает трудности.
Честно пытался прочитать прикрепленный doc. Мой WordPad его не взял. Word'а у меня на ноуте нет - дороговато.. Может, все-таки потрудишься набрать пару строк пальчиками?..

Unlegal
Пальчиками не получится, а если и получится будет очень коряво.
Там в Word'е используетя редактор формул Microsoft Equation.
Но выход всегда есть. Прилагаю скриншот.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.