07.05.2014, 12:01
|
#9 (permalink)
|
Новичок
Регистрация: 28.04.2014
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Цитата:
Сообщение от Vladimir_S
Легко. Если, конечно, не считать традиционно-тупых преподских указулек. Вот как раз вторую задачу было бы удобно решать через процедуру с ДВУМЯ выходными параметрами: булевским (содержит/не содержит) и собственно самой суммой. Но нет - подай им, вишь, функцию. Ладно, вывернемся.
Код:
const
n=8;
type
matr= array[1..n,1..n] of integer;
vect= array[1..n] of integer;
var
a,b: matr;
i,j,l,sum : integer;
Procedure findk(q1,q2:vect; k:integer);
var
p:integer;
bu:boolean;
begin
bu:=true;
for p:=1 to n do
if q1[p]<>q2[p] then bu:=false;
if bu then write(k:3);
end;
Function FindSum(q:vect):Integer;
var
p,S:integer;
bu:boolean;
begin
bu:=true;
S:=0;
for p:=1 to n do
begin
Inc(S,q[p]);
if q[p]<0 then bu:=false;
end;
if bu then S:=-32000;
FindSum:=S;
end;
Begin
for i:=1 to n do
for j:=1 to n do
begin
write('a[',i,',',j,']= ');
readln(a[i,j]);
b[j,i]:=a[i,j];
end;
writeln;
for i:=1 to n do
begin
for j:=1 to n do write(a[i,j]:4);
writeln;
end;
writeln;
Repeat
Writeln('Enter the action number:');
Writeln(' 1 - FindK');
Writeln(' 2 - FindSums');
Writeln(' 3 - Exit');
Readln(l);
Case l of
1: begin
write('K: ');
for i:=1 to n do FindK(a[i],b[i],i);
writeln;
end;
2: begin
for i:=1 to n do
begin
sum:=FindSum(a[i]);
if sum<>-32000 then writeln('i= ',i,' Sum= ',Sum);
end;
end;
else l:=3;
end; {Case}
Until l=3;
End.
|
Сегодня попыталась запустить в программе выдал ошибку:"Нельзя преобразовать тип array [1..8] of integer к array [1..8] of integer"
|
|
|