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.
Ответы
Ответ дал:
0
Программа не оптимальна ни по количеству операций, ни по алгоритму. Решение в прикрепленном файле.
Приложения:
Ответ дал:
0
Предложенный вариант применим, если все элементы массива положительные. В случае, если есть и положительные, и отрицательные, то функция function sum(a:mas; j:integer):real;
остается в первоначальном виде, обработка массива меняется.
остается в первоначальном виде, обработка массива меняется.
Ответ дал:
0
{ обработка массива }
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;
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;
Вас заинтересует
2 года назад
2 года назад
7 лет назад
7 лет назад
9 лет назад
10 лет назад
10 лет назад