Консультация № 159736
06.02.2009, 10:12
0.00 руб.
0 2 1
Здравствуйте,выручайте!
Разработать программу соответственно задаче, используя принципы структурного программирования.

Разработайте программу, формирующую квадратную матрицу D(n,m), n, m <=15, элементы которой определяются по формуле:
sin(i+j) при i<j
D[i,j]= 1 при i=j
(i+j)/(2i+3j) при i>j
В сформированной матрице поменять местами максимальный элемент среди элементов, лежащих ниже главной диагонали, с минимальным элементом среди элементов, лежащих ниже побочной диагонали. Вывести исходную матрицу, соответствующие элементы и их координаты, а также преобразованную матрицу.

Я сделал прогу без модульного программирования! код ниже. в Паскале АВС


Приложение:
Program track;
uses crt,graphABC;
const n=10;
var t ,MIN,MAX:real;
i,j,MIN_i,MIN_j,MAX_i,MAX_j:integer;
D:array[1..n,1..n] of real;

BEGIN TextAttr:=6; clrscr; SetWindowCaption('Работа с массивами Автор: Антон Комаров,ИСТ-1-08');
For i:=1 to n do begin
For j:=1 to n do begin
If i<j then D[i,j]:=sin(i+j);
If i=j then D[i,j]:=1;
If i>j then D[i,j]:=(i+j)/(2*i+3*j); end;end;

writeln('---------------Исходная матрица-----------------------');
For i:=1 to n do begin
For j:=1 to n do
Write(D[i,j]:3:2,' ');
writeln; delay(90);
end;
delay(2000);
MIN:=D[n,2]; MIN_i:=n; MIN_j:=2;
For i:=1 to n do
For j:=1 to n do
If (MIN>D[i,j]) and (i+j>n+1) then begin MIN:=D[i,j];
MIN_i:=i; MIN_j:=j;
end;
Writeln('Минимальный элемент ниже побочной диагонали: D[',MIN_i,',',MIN_j,']= ',MIN:3:2); delay(2000);

MAX:=D[2,1]; MAX_i:=2; MAX_j:=1;
For i:=1 to n do
For j:=1 to n do
If (MAX<D[i,j]) and (i>j) then begin MAX:=D[i,j];
MAX_i:=i; MAX_j:=j;
end;
Writeln('Максимальный элемент ниже главной диагонали: D[',MAX_i,',',MAX_j,']= ',MAX:3:2);

For i:=1 to n do begin
For j:=1 to n do begin
If i<j then D[i,j]:=sin(i+j);
If i=j then D[i,j]:=1;
If i>j then D[i,j]:=(i+j)/(2*i+3*j);
D[MIN_i,MIN_j]:=MAX;
D[MAX_i,MAX_j]:=MIN;
end;end;
delay(2000);
writeln('---------------Преобразованная матрица-----------------');
For i:=1 to n do begin
For j:=1 to n do
Write(D[i,j]:3:2,' ');
writeln; delay(90); end;
readln;
END.

Обсуждение

давно
Старший Модератор
31795
6196
06.02.2009, 14:28
общий
это ответ
Здравствуйте, Комаров Антон Сергеевич!

Программа в приложении.
Добавлено две подпрограммы:
OutPutMass - подпрограмма выводит массив на экран, а также подсвечивает проверяемые области(ниже главной диагонали, затем ниже побочной).
MinMax - подпрограмма занимается поиском максимального(минимального) элемента в нужной области массива. Совместить разные функции в одном коде позволяет свойство, если А > B, то -A < -B.

Убрал повторное создание массива.
Удачи!

Приложение:
Program track;
uses crt,graphABC;
const n=10;
type
Tmass= array[1..n,1..n] of real;
var t:real;
i,j,MIN_i,MIN_j,MAX_i,MAX_j:integer;
D:Tmass;
Procedure MinMax(W:Tmass;var x,y:integer;z:integer);
var
i,j,u:integer;
begin
u:=(1+2*z);
for i:=1 to n do
for j:=1 to n do
if ((u*W[i,j]) > (u*W[x,y]))and(i>((n+1)*(-z)+u*j))then
begin
x:=i;
y:=j;
end;
end;
Procedure OutPutMass(A:Tmass;z:integer);
var
i,j:integer;
begin
For i:=1 to n do
begin
For j:=1 to n do
begin
if i>((n+1)*(-z)+(1+2*z)*j)
then TextAttr:=5
else TextAttr:=6;
Write(A[i,j]:6:2,' ');
end;
writeln; delay(90);
end;
end;

BEGIN TextAttr:=6; clrscr; SetWindowCaption('Работа с массивами Автор: Антон Комаров,ИСТ-1-08');
For i:=1 to n do
begin
For j:=1 to n do
begin
If i<j then D[i,j]:=sin(i+j);
If i=j then D[i,j]:=1;
If i>j then D[i,j]:=(i+j)/(2*i+3*j);
end;
end;

writeln('---------------Исходная матрица-----------------------');
OutputMass(D,0);
delay(2000);
MIN_i:=n; MIN_j:=2;
MinMax(D,MIN_i,MIN_j,-1);
Writeln('Минимальный элемент ниже побочной диагонали: D[',MIN_i,',',MIN_j,']= ',D[MIN_i,MIN_j]:6:2); delay(2000);

MAX_i:=2; MAX_j:=1;
MinMax(D,MAX_i,MAX_j,0);
Writeln('Максимальный элемент ниже главной диагонали: D[',MAX_i,',',MAX_j,']= ',D[MAX_i,MAX_j]:6:2);

t:=D[MIN_i,MIN_j];
D[MIN_i,MIN_j]:=D[MAX_i,MAX_j];
D[MAX_i,MAX_j]:=t;

delay(2000);
writeln('---------------Преобразованная матрица-----------------');
OutPutMass(D,-1);
readln;
END.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
07.02.2009, 22:05
общий
Вот спасибо! А еще нельзя модули подключить свои??
Форма ответа