// PascalABC.Net 3.0, сборка 1052function kn(a,b,c:integer):byte;{ функция возвращает количество отрицательных среди a,b,c}var n:byte;begin if a<0 then n:=1 else n:=0; if b<0 then Inc(n); if c<0 then Inc(n); kn:=nend;function cond(c:char;v:integer):string;{ функция формирует строку вида с>0 или c<0 в зависимости от знака v}begin if v<0 then cond:=c+'<0 ' else cond:=c+'>=0'end;procedure pv(a,b,c:integer; n:byte);{ печать строки теста }var m:byte;begin m:=kn(a,b,c); Write(cond('a',a),' ',cond('b',b),' ',cond('c',c),' '); Write('отрицательных ',m); if n=m then Write(' - тест прошел') else Write(' - тестовое: ',n); Writelnend;{ тестовое решение }const T:array[1..8,1..3] of integer=((1,1,1),(1,1,-1),(1,-1,1), (1,-1,-1),(-1,1,1),(-1,1,-1),(-1,-1,1),(-1,-1,-1)); R:array[1..8] of byte=(0,1,1,2,1,2,2,3);var i:byte;begin for i:=1 to 8 do pv(T[i,1],T[i,2],T[i,3],R[i])end.
Тестирование:a>=0 b>=0 c>=0 отрицательных 0 - тест прошелa>=0 b>=0 c<0 отрицательных 1 - тест прошелa>=0 b<0 c>=0 отрицательных 1 - тест прошелa>=0 b<0 c<0 отрицательных 2 - тест прошелa<0 b>=0 c>=0 отрицательных 1 - тест прошелa<0 b>=0 c<0 отрицательных 2 - тест прошелa<0 b<0 c>=0 отрицательных 2 - тест прошелa<0 b<0 c<0 отрицательных 3 - тест прошел