Насчет первой задачи. У Вас неверно построен оконечный цикл. Давайте разберемся. Вот Ваш фрагмент:
Код:
for i:=1 to Nmax do
for j:=1 to Nmax do
begin
if (a[i,j]<0) and (i=j) then
begin
for j:=1 to Nmax do
begin
S:=S+a[i,j];
end;
writeln ('S=',S);
readln;
end;
end;
То есть НЕ ЗАВЕРШИВ внешний цикл по j Вы открываете внутренний цикл... по тому же j !!! Так не годится. Замечу, что этот внешний цикл вовсе не нужен. К тому же, у Вас пропущено обнуление числа S при переходе к следующей строке. Я бы предложил как-нибудь так:
Код:
for i:=1 to Nmax do
if a[i,i]<0 then
begin
S:=0;
for j:=1 to Nmax do
S:=S+a[i,j];
writeln ('S[',i,']= ',S);
end;
Readln;