44 lines
1 KiB
Text
44 lines
1 KiB
Text
proc abs(int n) int: if n<0 then -n else n fi corp
|
|
|
|
proc write_term(word index; int scalar; bool first) void:
|
|
if first then
|
|
if scalar<0 then write("-") fi
|
|
else
|
|
write(if scalar<0 then " - " else " + " fi)
|
|
fi;
|
|
if abs(scalar)>1 then
|
|
write(abs(scalar), '*')
|
|
fi;
|
|
write("e(",index,")")
|
|
corp
|
|
|
|
proc lincomb([*]int terms) void:
|
|
bool first;
|
|
word index;
|
|
first := true;
|
|
|
|
for index from 0 upto dim(terms,1)-1 do
|
|
if terms[index] /= 0 then
|
|
write_term(index+1, terms[index], first);
|
|
first := false
|
|
fi
|
|
od;
|
|
|
|
writeln(if first then "0" else "" fi)
|
|
corp
|
|
|
|
proc main() void:
|
|
[3]int a1 = (1,2,3);
|
|
[4]int a2 = (0,1,2,3);
|
|
[4]int a3 = (1,0,3,4);
|
|
[3]int a4 = (1,2,0);
|
|
[3]int a5 = (0,0,0);
|
|
[1]int a6 = (0);
|
|
[3]int a7 = (1,1,1);
|
|
[3]int a8 = (-1,-1,-1);
|
|
[4]int a9 = (-1,-2,0,3);
|
|
[1]int a10 = (-1);
|
|
lincomb(a1); lincomb(a2); lincomb(a3); lincomb(a4);
|
|
lincomb(a5); lincomb(a6); lincomb(a7); lincomb(a8);
|
|
lincomb(a9); lincomb(a10)
|
|
corp
|