Pascal. Проверить, является ли код оптимальным и правильным решением задачи, решить проблему вывода при отсутствии "специальных элементов"
Задача: дана вещественная матрица А размера NxM, вывести значение и индексы "особого элемента" (считается особым, если он больше суммы остальных элементов его столбца).
Описание: const nmax=10; mmax=10;
type mas=array[1..nmax,1..mmax] of real;
var n,m,j,i:integer; (где n и m - размерность, не превышающая nmax, mmax соответственно)
a:mas;
function sum(a:mas; j:integer):real;
var i:integer;
s:real;
begin
s:=0;
for i:=1 to n do
s:=s+a[i,j];
sum:=s;
end;
begin
writeln ('Специальные элементы:');
for j:=1 to m do
for i:=1 to n do
if a[i,j]>sum(a,j)-a[i,j] then writeln ('a[',i,',',j,']=',a[i,j]);
end.
Answers & Comments
остается в первоначальном виде, обработка массива меняется.
pr:=0;
for j:=1 to m do
begin
k:=sum(a,j);
for i:=1 to n do
begin
if a[i,j]>k-a[i,j] then
begin
if pr=0 then
begin
writeln('особые элементы');
pr:=1;
end;
writeln ('a[',i,',',j,']=',a[i,j]);
end;
end;
end;
if pr=0 then writeln('особых элементов нет');
end.
При этом переменная k, описанная как integer, описывается как real;