Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача паскаль
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Трям
Задана матрица (двумерный массив) A размером N x М , состоящая из действительных элементов. Получить новую матрицу путем умножения всех элементов данной матрицы на ее наибольший элемент. Сформировать вектор из элементов главной диагонали и отсортировать его по возрастанию
var 
a:array[1..100,1..100]of integer;
b:array[1..100]of integer;
i,j,n,m,p:integer;
begin
read(n,m);
p:=low(p);
for i:=1 to n do
for j:=1 to m do begin
read(a[i,j]);
if a[i,j]>p then p:=a[i,j];end;
for i:=1 to n do begin
for j:=1 to m do begin
a[i,j]:=a[i,j]*p;
write(a[i,j],' ');end;
writeln;end;
for i:=1 to n do
b[i]:=round(a[i,i]/p);
for i:=1 to n do
for j:=1 to n-1 do
if b[j]>b[j+1] then begin p:=b[j];b[j]:=b[j+1];b[j+1]:=p;end;
for i:=1 to n do
write(b[i],' ');
end.

вот такая задачка, помогите пожалуйста насчет ошибок в решении и с блок схемой(вернее программу чтобы блок схемы составлять посоветуйте пожалуйста)
sheka
Я пользуюсь DiagramDesigner. Только составлять надо самому.
Желательно делать отступы в начале строк - более читабельно.
Трям
Спасибо за совет wink.gif
и всё таки по программе, есть вот такой вариант
Program Tryam;
var
A:array[1..50,1..50]of integer;
B:array[1..50,1..50]of integer;
C:array[1..50]of integer;
max,d,n,m,s,i,j:integer;
begin
writeln('Введите n,m');
readln(n,m);
writeln(‘Как будем вводить1 – с клавиатуры,2 – генератором случайных чисел');
readln(d);
if d=1 then
begin
for i:=1 to n do
begin
for j:=1 to m do
read(A[i,j]);
readln
end;
end
else
begin
randomize;
for i:=1 to n do
begin
for j:=1 to m do
begin
A[i,j]:=10-random(20);
end;
writeln;
end;
end;
max:=A[i,j];
for i:=1 to n do
for j:=1 to m do
if(A[i,j]>max)then
max:=A[i,j];
for i:=1 to n do
for j:=1 to m do
B[i,j]:=A[i,j]*max;
for i:=1 to n do
for j:=1 to m do
if i=j then (C[i]=B[i,j])
for i:=1 to n do
for j:=1 to m do
if(C[j]>C[j+1]) then
begin
s:=C[j+1];
C[j]:=s;
end;
writeln('Полученная матрица:');
for i:=1 to n do
begin
for j:=1 to m do
write(B[i,j],' ');
writeln;
end;
writeln('Полученный вектор:');
for i:=1 to n do
write(C[i],' ');
end.

думаю более правильный, только вот с этим s:=C[j+1]; C[j]:=s; что то неправильно, как тут исправить?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.