Информатика, вопрос задал prettysabrie , 9 лет назад

Разработать схему алгоритма для подсчёта количества отрицательных чисел среди целых чисел а,в,с.Протестировать алгоритм для всех возможных случаев (когда количество отрицательных чисел равно 0,1,2,3,)
Помогите кто понимает))

Ответы на вопрос

Ответил Аноним
0
// PascalABC.Net 3.0, сборка 1052
function 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:=n
end;

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);
  Writeln
end;

{ тестовое решение }
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 - тест прошел

Новые вопросы