Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача паскаль
Форум «Всё о Паскале» > 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; что то неправильно, как тут исправить?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.